Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编辑文本框时,如何读取gridview单元格?_C#_Asp.net_Visual Studio 2010_Gridview - Fatal编程技术网

C# 编辑文本框时,如何读取gridview单元格?

C# 编辑文本框时,如何读取gridview单元格?,c#,asp.net,visual-studio-2010,gridview,C#,Asp.net,Visual Studio 2010,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

我有点进退两难,我不知道如何解决这个问题。如果我正在编辑一个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?非常感谢您的帮助。谢谢

这可能有点太简单了,但是:

    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搜索控件要比在数组中计算控件的编号容易得多

你的问题没有意义。你能澄清你对X和Y的意图吗?编辑模式和什么有什么关系?是的,我有点难以理解这个问题。如果您只使用GridView.FindControl(“lblMyLabel”),它将简化您对文本框的请求。如果您这样做了,您甚至不需要查找文本框,只需在ViewMode中搜索标签,而不是在Edit Mode中搜索文本框Yes mikey这正是我想要做的。我怎样才能为gridview创建这样一个标签呢?等等,我正试图写出一个完整的答案,所以我必须将该列转换为templatefield并添加一个标签。标签只是在视图模式下存储数据的一种方式,您可以使用任何您想要的控件。然后搜索它并抓住它的价值