0

我有点进退两难,我不知道如何解决这个问题。如果我正在编辑网格视图,我正在读取这些行

 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?帮助将不胜感激。谢谢!

4

1 回答 1

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 搜索控件比试图找出它们在数组中的编号要容易得多

于 2012-04-16T16:30:57.553 回答