2012-02-08 37 views
1

如何从GridView的当前行中选择所有数据。 我有一列GridView中的编辑链接。点击“编辑”链接按钮时,我想使用该选定行的数据。我想下面的代码,但它返回我空值如何从GridView的当前行中选择所有数据

protected void gv_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    gv.EditIndex = -1; 
    GridViewRow gvRow = gv.Rows[ e.NewEditIndex]; 
    string selectedID = gvRow.Cells[3].Text; 
} 

       <asp:GridView runat = "server" ID="gvRange0" SkinID="gridView"    AutoGenerateColumns="False" 
          AllowSorting="True" OnRowCancelingEdit="gvRange_RowCancelingEdit" OnRowDeleting="gvRange_RowDeleting" 
          OnRowEditing="gvRange_RowEditing" OnRowUpdating="gvRange_RowUpdating" 
           Width="684px" OnRowDataBound="gvRange_RowDataBound" 
          DataMember="DefaultView" OnPageIndexChanged="gvRange_PageIndexChanged" 
          OnPageIndexChanging="gvRange_PageIndexChanging" OnSorting="gvRange_Sorting" DataKeyNames = "RANGE_ID" 
          OnSelectedIndexChanged="gvRange_SelectedIndexChanged" Height="65px" > 
           <Columns> 
            <asp:TemplateField ShowHeader="False"> 
             <ItemTemplate> 
             <ControlStyle Width="2px" /> 
              <asp:LinkButton ID="lnkDelete0" runat="server" CssClass="lnk" 
               CausesValidation="False" CommandName="Delete" 
               Text="Delete" Visible="false"></asp:LinkButton> 
              <asp:CheckBox runat="server" ID="chkSelect" CssClass="lbl" Text="" AutoPostBack="False" OnCheckedChanged="chkSelect_CheckedChanged" /> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField ShowHeader="False"> 
            <ItemTemplate> 
            <controlStyle width="2px" /> 
             <asp:LinkButton ID="lnkEdit" runat="server" CssClass="lnk" CausesValidation="False" CommandName="Edit" 
             Text="Edit" ></asp:LinkButton> 

            </ItemTemplate> 
            <ItemStyle Width="5px" /> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Ranges" SortExpression="Sort_Ranges"> 
             <ControlStyle Width="5px" /> 
             <ItemTemplate> 
             <%#DataBinder.Eval(Container.DataItem,"Min_Age") %> 

             <%# CheckNull(DataBinder.Eval(Container.DataItem,"Max_Age")) %> 
             </ItemTemplate> 
            <%-- <ItemTemplate>--%> 
              <%--<asp:Label ID="lblStageName" CssClass="lbl" runat="server" Text='<%# Bind("Age_Range") %>' Width="1px"></asp:Label>--%> 
            <%-- </ItemTemplate>--%> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Range ID"> 
            <ItemTemplate><%#DataBinder.Eval(Container.DataItem,"RANGE_ID") %></ItemTemplate> 
            </asp:TemplateField> 
           </Columns>       
          </asp:GridView> 

里有GridView 4列。一个包含复选框,第二个是编辑的链接按钮,第三个包含某个值的数据绑定,第四个是我想用来从数据库获取一些值的列(即主键),并且此列是隐藏的。

+0

你可以显示'GridView'的标记吗? – jadarnel27 2012-02-08 13:53:57

回答

0

我注意到,你说你需要访问的第4列,但你使用gvRow.Cells[3].Text;

在Cell对象的索引是从1完成的,所以如果你需要访问的第4行网格视图试试这个:

string selectedID = gvRow.Cells[4].Text; 

编辑:

能否请您确认两件事情对我来说

1)当你点击lnkEdit时,会引发GridView1_RowEditing事件?

2)如果是,e.NewEditIndex值总是显示为'0'?
尝试单击不同行上的编辑链接时,结果始终为'0'?

+0

是的..这是工作时,我选择与复选框的行。但当我点击链接按钮编辑它的行索引显示我0.所以为它不返回我任何价值.. – Pramod 2012-02-09 06:40:07

+0

请张贴您的标记(您的gridview的HTML代码)由jadarnel27建议,这将有助于帮助你的人 – 2012-02-09 06:46:34

+0

你可以在我的编辑中测试两点,并让我知道结果是什么?在Deni – 2012-02-09 07:59:15

1

某时在gridview单元格中创建子控件。 你可以试试这段代码。可能会解决它。

protected void gv_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    gv.EditIndex = -1; 

    GridViewRow gvRow= (GridViewRow)(((Button)e.CommandSource).NamingContainer); 


    foreach (TableCell Tc in gvRow.Cells) 
      { 
       //if you are not getting value than find childcontrol of TabelCell. 
       string sss = c.Text; 
       foreach (Control ctl in Tc.Controls) 
       { 

        //Child controls 
        Label lb = ctl as Label; 
        string s = lb.Text; 
        sb.Append(s + ','); 
       } 
      } 
} 
相关问题