0

ASP.NET に GridView があり、この GridView の列内に以下のコントロールがあります。

<asp:TemplateField>       
    <ItemTemplate>
        <input id='<%#Eval("po_asn_number") %>' class="css-checkbox" type="checkbox" />                                                       
        <label for='<%#Eval("po_asn_number") %>' name="lbl_1" class="css-label"></label>        

        <asp:HiddenField ID="poid" runat="server" Value='<%#Eval("po_asn_number") %>' />
    </ItemTemplate>                     
</asp:TemplateField>

これはコード ビハインドの OnClick イベントです。

protected void create_Click(object sender, EventArgs e)
{
    foreach (GridViewRow gvr in GridView1.Rows)
    {
        HiddenField poid = ((HiddenField)gvr.Cells[0].FindControl("poid"));

        if (((HtmlInputCheckBox)gvr.FindControl(poid.Value)).Checked == true)
        {
            Response.Redirect("ShipmentDetail.aspx?id=" + poid.Value);
        }
        else
        {
            //Do nothing
        }
    }
}

ここで最初にやろうとしていることは、値が の ID である HiddenField を探します<input type="checkbox" />。次に、がチェックされているかどうかを確認してcheckboxいます。もしそうなら、何か他のことをして何もしないでください。

ボタンをクリックすると、エラーが発生します。

Object reference not set to an instance of an object

Line 48:             if (((HtmlInputCheckBox)gvr.FindControl(checkbox)).Checked == true)
Line 49:             {
Line 50:                 Response.Redirect("ShipmentDetail.aspx?id=" + poid.Value);

あなたが提供できるどんな助けも高く評価されます。

4

2 に答える 2