元:mypage.aspx?num=xxx
コード ビハインドでマイページのGridviewnum
にチェックボックス列を追加するにはどうすればよいですか?
パラメータを使用してDatatablenum
に列を追加しましたが、マイページを読み込んだときにチェックボックスが無効になっているため、チェックできません。typeof(bool)
これは私のグリッドaspxコードです
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
<Columns>
</Columns>
</asp:GridView>
まず、num
テンプレート フィールドの数をグリッドビューに追加します。
protected void Page_PreInit(object sender, EventArgs e)
{
int num = Request.QueryString["num"];
for (int i = 0; i < num; i++)
{
TemplateField tf = new TemplateField();
tf.HeaderText = "Status";
gv.Columns.Add(tf);
}
}
テンプレート フィールドを追加したら、グリッドビューにチェックボックスを追加します。チェックボックスを追加する関数を書きます。以下はコードです
private void AddCheckBox()
{
int num = Request.QueryString["num"];
for (int i = 0; i < num; i++)
{
foreach (GridViewRow row in gv.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
CheckBox cb = new CheckBox();
cb.Checked = true;
row.Cells[i].Controls.Add(cb);
}
}
}
}
この関数をグリッド データバインド イベントに配置します。
protected void gv_DataBound(object sender, EventArgs e)
{
AddCheckBox();
}
最後に、ページ読み込みイベントでも関数を呼び出すので、最初にグリッドが読み込まれたときにチェックボックスがオンになっていることが示されます
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
AddCheckBox();
}
}
コードを確認するには: バインドされたフィールドをグリッド ビューに追加し、グリッド ビューをデータ テーブルにバインドします。
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Data" HeaderText="Data" />
</Columns>
</asp:GridView>
page_loadイベントのコードビハインドで、次のコードを追加します
DataTable dt = new DataTable();
dt.Columns.Add("Data");
DataRow dr = dt.NewRow();
dr[0] = "Test";
dt.Rows.Add(dr);
gv.DataSource = dt;
gv.DataBind();
また、関数 AddCheckBox を次のように 1 つ変更しました。
for (int i = 1; i < num + 1; i++)
上記の変更は、グリッド ビュー列のインデックス 0 にデータバインド フィールドがあるため、1 から開始するように変更したために行われました。
これが結果です(ページ出力)
Data Status Status Status Status Status Status Status Status Status Status
Test Checked Checked Checked Checked Checked Checked Checked Checked Checked Checked
Checked は、チェックボックスがチェックされている場合に使用されます
使用する:
Request.QueryString["num"]
URL の num の値を取得します。次に、チェックボックスフィールドを毎回 GridView に追加して、num 回繰り返します。