0

グリッドビューに次の2つのBoundFieldがあります

<asp:BoundField DataField="ProductId" HeaderText="ID" HeaderStyle-HorizontalAlign="Left" Visible = "false" />
 <asp:BoundField DataField="ProductDescription" HeaderText="product Description" HeaderStyle-HorizontalAlign="Left" />

最初にバインドされたフィールドがfalseに設定されている場合、その値を取得するにはどうすればよいですか?

4

2 に答える 2

2

非表示のBoundFieldの値にアクセスすることはできません。コントロールを使用TemplateFieldして追加し、HiddenFieldそのValueプロパティをバインドする必要があります。

マークアップ、

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:HiddenField ID="HiddenField1" runat="server" 
                    Value='<%# Eval("ProductId") %>' />
                 ....
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

各行の最初のセルのHiddenFieldコントロールから値を取得するためのコードビハインド。

 foreach (GridViewRow row in GridView1.Rows)
  {
    if (row.RowType == DataControlRowType.DataRow)
      {
       HiddenField productid = row.Cells[0].FindControl("HiddenField1") as HiddenField;
       ...
       }
  }
于 2012-05-22T01:34:08.357 に答える
1

IDを使用する場合はDataKeyNames、GridViewのプロパティを使用することをお勧めします

DataKeyNames="ProductId"

その後、背後のコードでそれを取得できます

GridView1.DataKeys[row_index]["ProductId"]
于 2012-05-22T01:33:59.463 に答える