2010-06-11 3 views
3

Я использую флажки в GridView. Мне нужно определить значение в ячейке во втором столбце, если флажок установлен.Получение значения rowID для флажка «checked» в GridView в ASP.Net

Я использую C# 2008 и ASP.net

    <asp:GridView ID="gvOrders" runat="server" AutoGenerateColumns="False" CellPadding="4" GridLines="None" Width="100%" AllowPaging="True" PageSize="20" 
        onpageindexchanging="gvOrders_PageIndexChanging" ForeColor="#333333"> 
        <Columns> 
         <asp:TemplateField HeaderText="VerifiedComplete" > 
          <ItemTemplate> 
           <asp:CheckBox ID="cbPOID" runat="server"/> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:BoundField DataField="PurchaseOrderID" HeaderText="PurchaseOrderID" HtmlEncode="False" ></asp:BoundField> 
         <asp:BoundField DataField="VENDOR_ID" HeaderText="Vendor ID"></asp:BoundField> 
         <asp:BoundField DataField="VENDOR_NAME" HeaderText="Vendor Name"></asp:BoundField> 
         <asp:BoundField DataField="ITEM_DESC" HeaderText="Item Desc"></asp:BoundField> 
         <asp:BoundField DataField="SYS_DATE" HeaderText="System Date"></asp:BoundField> 
        </Columns> 
        <FooterStyle CssClass="GridFooter" BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
        <PagerStyle CssClass="GridPager" ForeColor="#333333" BackColor="#FFCC66" HorizontalAlign="Center" /> 
        <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" /> 
        <HeaderStyle CssClass="GridHeader" BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
        <RowStyle CssClass="GridItem" BackColor="#FFFBD6" ForeColor="#333333" /> 
        <AlternatingRowStyle CssClass="GridAltItem" BackColor="White" /> 
       </asp:GridView> 





     protected void btnDisable_Click(object sender, EventArgs e) 
    { 
      foreach (GridViewRow gvr in gvOrders.Rows) 
      { 

       if (((CheckBox)gvr.FindControl("cbPOID")).Checked == true) 
       { 
        string strPrimaryid = gvr.Cells[2].ToString(); 
       } 
      } 

    } 
+0

Просьба уточнить: «Мне нужно определить значение в ячейке во втором столбце, если флажок связанной строки был проверен». У вас есть два флажка в одном столбце в разных строках, и вы хотите сравнить их проверочное состояние? И когда/где вы должны это сравнить? –

+0

Нет, только один флажок в строке; – user279521

+0

Когда вы даете дополнительную информацию на свой вопрос, лучше отредактируйте исходный вопрос и добавьте его вместо комментария. Где вам нужно значение и состояние проверки флажка? Возможно, вам следует предоставить некоторый исходный код. –

ответ

2

Другой способ сделать это, чтобы избежать доступа к клеткам GridView по индексу, чтобы преобразовать нужный BoundField в TemplateField в конструкторе. Затем используйте метод FindControl для получения текстового значения в этой ячейке. По умолчанию дизайнер предоставит элементу управления Label новый TemplateField имя типа «Label1».

Я бы добавил несколько фотографий, чтобы показать часть дизайнера, если бы этот процесс был проще. Во всяком случае, ASPX изменится таким образом, что вы могли бы сделать тоже вручную:

<asp:BoundField DataField="PurchaseOrderID" ...</asp:BoundField> 

становится

<asp:TemplateField HeaderText="PurchaseOrderID"> 
<ItemTemplate> 
    <asp:Label ID="Label1" runat="server" Text='<%# Bind("PurchaseOrderID") %>'></asp:Label> 
</ItemTemplate> 
<EditItemTemplate> 
    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("PurchaseOrderID") %>'></asp:TextBox> 
</EditItemTemplate> 
</asp:TemplateField> 

Тогда вы сделали бы это простое изменение кода:

string strPrimaryid = gvr.FindControl("Label1").Text; 

Однако, я думаю, что лучший способ сделать это - использовать DataK eys элемента управления GridView. Первым шагом было бы установить свойство DataKeyNames вашего GridView:

<asp:GridView ID="gvOrders" runat="server" DataKeyNames="PurchaseOrderID" ...> 

Тогда, предполагая, что ваш столбец PurchaseOrderID имеет тип INT, вы изменили бы ту же самую линию, чтобы быть:

int primaryid = (int)gvOrders.DataKeys[gvr.RowIndex].Value; 
Смежные вопросы