1

元:mypage.aspx?num=xxx

コード ビハインドでマイページのGridviewnumにチェックボックス列を追加するにはどうすればよいですか?

パラメータを使用してDatatablenumに列を追加しましたが、マイページを読み込んだときにチェックボックスが無効になっているため、チェックできません。typeof(bool)

4

2 に答える 2

4

これは私のグリッド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 は、チェックボックスがチェックされている場合に使用されます

于 2012-07-27T10:30:45.210 に答える
0

使用する:

Request.QueryString["num"]

URL の num の値を取得します。次に、チェックボックスフィールドを毎回 GridView に追加して、num 回繰り返します。

于 2012-07-27T09:57:56.507 に答える