2012-02-08 55 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 + ','); 
       } 
      } 
} 
相關問題