2012-01-30 52 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

相关问题