2012-04-16 56 views
0

我有一点困惑,我不知道如何解决这个问题。如果我编辑的GridView,我读的行这样如何在编辑文本框的同时阅读gridview单元格?

cmd.Parameters.Add("@X", SqlDbType.Char).Value = ((TextBox)GridView1.Rows[e.RowIndex].Cells[15].Controls[0]).Text; 
cmd.Parameters.Add("@Y", SqlDbType.Char).Value = ((TextBox)GridView1.Rows[e.RowIndex].Cells[15].Controls[0]).Text; 

当GridView控件处于编辑模式,两个单元X和Y文本框,因为这是默认的编辑模式。我手动创建了列,我希望单元格X是“只读”。如何更改代码以便我可以在没有文本框的情况下阅读单元格X?帮助将不胜感激。谢谢!

+0

您的问题没有意义。你能澄清你对X和Y的意图吗?编辑模式与任何事情有什么关系? – 2012-04-16 16:23:47

+0

是的,我有点努力去理解这个问题。如果你只是使用了GridView.FindControl(“lblMyLabel”),它将简化你对文本框的请求。如果你这样做,你甚至不需要查找文本框,只需在ViewMode中搜索标签,而不是编辑模式中的文本框 – 2012-04-16 16:26:51

+0

是的mikey正是我想要做的。我怎么能为gridview创建这样一个标签? – javasocute 2012-04-16 16:29:05

回答

2

这可能是有点过于简单,但如何:

var lblHolder = (Label) GridView1.FindControl("lblMyLabel") 
    cmd.Parameters.Add("@X", SqlDbType.Char).Value = lblHolder.Text 

只要搜索您的标签(或任何持有你的值)直接

那么你的网格视图可以是这个样子

    <asp:GridView ID="gvData" runat="server"       AutoGenerateColumns="false" Width="95%" Font-Names="Verdana"> 
        <RowStyle Height="40px" /> 
        <Columns> 
         <asp:TemplateField HeaderText="Col1"> 
          <ItemTemplate> 
           <asp:Label ID="lblMyLabel" runat="server" 
            Text='<%# eval("MyDataBaseField")%>' /> 
            </ItemTemplate> 
         </asp:TemplateField> 
        </Columns> 
       </asp:GridView> 

然后你只需要连接一个数据源到网格。当然还有其他一些方法可以做到这一点,但是通过它们的Id来搜索控件要比试图找出它们在数组中的数量要容易得多

+0

所以我不得不将这个列转换成一个templatefield并且基本上添加一个标签? – javasocute 2012-04-16 16:33:15

+0

标签只是一种存储数据的方式,当它处于查看模式时,您可以使用任何您想要的控件。然后搜索它,并抓住它的价值 – 2012-04-16 16:38:11

+0

真棒。非常感谢你,先生。 – javasocute 2012-04-16 16:41:17

相关问题