2012-01-30 51 views
2

目前我正在開展我的最後一年項目。 在gridview中加載數據的網頁中,每行都有一個按鈕,它會彈出一個窗口並要求在**文本框**內寫入錯誤並在服務器上提交該錯誤。 在服務器端,我需要兩個值,第一個是該行的主鍵以及在** textbox **中寫入的錯誤。獲得主鍵值很容易,但我無法在文本框中獲得價值。 我附加.aspx文件的代碼: 如何從gridview中的模板字段中獲取數據

<asp:GridView ID="gvPODetails" runat="server" DataSourceID="Inspection_SqlDataSource" 
      EnableModelValidation="True" AllowSorting="True" AutoGenerateColumns="False" 
      BackColor="#CCCCCC" BorderColor="Black" BorderStyle="Solid" BorderWidth="3px" CellPadding="4" ForeColor="Black" CellSpacing="2"> 
      <Columns> 
       <asp:BoundField DataField="ProductCode" HeaderText="ProductCode" SortExpression="ProductCode" /> 
       <asp:BoundField DataField="MaterialCode" HeaderText="MaterialCode" SortExpression="MaterialCode" /> 
       <asp:TemplateField> 
        <ItemStyle BorderStyle="None" BorderColor="Transparent" BorderWidth="0px" /> 
        <ItemTemplate> 
         <asp:LinkButton ID="lnkbtnOk" OnClick="Ok_Click" CommandArgument='<%# Eval("Identity")%>' 
          runat="server" Text="Ok"></asp:LinkButton> 
         <asp:LinkButton ID="lnkbtnReject" runat="server" Text="Reject"></asp:LinkButton>       
         <asp:Panel ID="popUp_Data" runat="server" CssClass="modelPopup" Style="display: none;"> 
          <table style="padding: 10px 10px 10px 10px; width: 100%;"> 
           <tr> 
            <td> 
            </td> 
            <td align="right"> 
             <input id="close_popup" type="image" src="../Images/closebox.gif" /> 
            </td> 
           </tr> 
           <tr valign="top"> 
            <td align="right"> 
             <asp:Label ID="lblError" Text="Error" runat="server" CssClass="fontStyle"></asp:Label> 
            </td> 
            <td align="left"> 
             <asp:TextBox ID="txtError" runat="server" CssClass="ta" 
              TextMode="MultiLine"></asp:TextBox> 
            </td> 
           </tr> 
           <tr> 
            <td> 
            </td> 
            <td align="left"> 
             <asp:Button ID="btnSubmit" runat="server" CssClass="sbmt" Text="Reject Item" OnClick="Reject_Click" 
              CommandArgument='<%# Eval("Identity")%>' /> 
            </td> 
           </tr> 
          </table> 
         </asp:Panel>        
         <asp:ModalPopupExtender ID="popUp_Data_ModalPopupExtender" runat="server" DynamicServicePath="" 
          Enabled="True" BackgroundCssClass="modelBackground" PopupControlID="popUp_Data" 
          TargetControlID="lnkbtnReject" CancelControlID="close_popup"> 
         </asp:ModalPopupExtender> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
      <EmptyDataTemplate> 
       <asp:Label runat="server" ID="lblNoDataFound" Text="No Machine Found."></asp:Label> 
      </EmptyDataTemplate> 
     </asp:GridView> 

我要的是ID爲txtError內的文本框的數據。

回答

2

由於它是重複項目,因此無法直接使用其ID來訪問它。您可以使用FindControl代替如下:

var textBoxAux = gridView.Rows[index].FindControl("txtError") as TextBox; 

你需要找到你正在處理該事件的行指數

編輯:找到索引...

傳遞DataItemIndexCommandArgument(而不是身份的)如果適用。

CommandArgument='<%# Container.DataItemIndex %>' 

編號:ASP.NET GridView RowIndex As CommandArgument

+0

這是我們不知道 – 2012-01-30 10:48:36

+0

@ user1177814 chikketycheck編輯。 – 2012-01-30 11:01:26

+0

謝謝......首先我比較了小學中匹配的所有值,但是比我顯示您的回覆並將我的方法更改爲高效。 – 2012-01-30 15:49:38

相關問題