Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
Asp.net gridview模板字段内的访问控制_Asp.net_Vb.net - Fatal编程技术网

Asp.net gridview模板字段内的访问控制

Asp.net gridview模板字段内的访问控制,asp.net,vb.net,Asp.net,Vb.net,从过去几天开始,我尝试访问asp.net vb代码文件中的不同控件ID,我将这些代码文件放入gridview模板字段中,如文本框、标签和下拉列表。我想做的是,我有一个sql表“coursereg”,它有不同的列。我放了一个gridview并在其中添加了一个模板字段,然后将“在gridview控件中生成自动列”放在false中,我在该临时字段中放了一个HTML表并放了一些控件。该表中的一些控件与sql表“coursereg”字段绑定,如文本框和标签,还有一些控件是打开的,用户将自己填充。现在我有一

从过去几天开始,我尝试访问asp.net vb代码文件中的不同控件ID,我将这些代码文件放入gridview模板字段中,如文本框、标签和下拉列表。我想做的是,我有一个sql表“coursereg”,它有不同的列。我放了一个gridview并在其中添加了一个模板字段,然后将“在gridview控件中生成自动列”放在false中,我在该临时字段中放了一个HTML表并放了一些控件。该表中的一些控件与sql表“coursereg”字段绑定,如文本框和标签,还有一些控件是打开的,用户将自己填充。现在我有一个表单中的提交按钮,它将所有文本添加到另一个名为FA的sql表中。在这里,当我尝试使用cmd.CommandText(如cmd.Parameters.AddWithValue(“@name”,txtname.text.string))添加这些控件的值/文本时,我被抓住了textbox id txtname没有得到填充并显示错误txtbox没有声明它可能由于其保护级别而无法访问,并且像wise一样在我放在gridview中的所有控件上显示相同的错误。请帮助我在这方面plzzz我正在学习asp.net(V.b)我自己,没有那么多的编程技能来解决它

 Protected Sub Button1_Click(sender As Object, e As EventArgs)
    cmd.CommandText = "INSERT INTO FA (regno,photo,name,parentage,address,Phone,foccupation,income,category,class,rollno,course,subjects,actnumber,actname,acttype,bankname,branchname) " & _
               "values(@regno,@photo,@name,@parentage,@address,@Phone,@foccupation,@income,@category,@class,@rollno,@course,@subjects,@actnumber,@actname,@acttype,@bankname,@branchname)"
    cmd.Parameters.AddWithValue("@name", txtname.text.string)

    ' i (tried this but does not work)   Dim text As TextBox = TryCast(grd.Controls(0).Controls(0).FindControl("textname"), Text)
End Sub

<asp:TextBox ID="TextBox1" runat="server" Enabled="False" ReadOnly="True" Text='<%# String.Format("{0} {1} {2}", Eval("sfname"), Eval("smname"), Eval("slname")) %>' Height="22px" Width="308px" Font-Size="12pt"></asp:TextBox>
受保护的子按钮1\u单击(发件人作为对象,e作为事件参数)
cmd.CommandText=“插入FA(注册号、照片、姓名、亲子关系、地址、电话、焦点、收入、类别、班级、学号、课程、科目、actnumber、actname、acttype、bankname、branchname)”&_
“值(@regno、@photo、@name、@parentage、@address、@Phone、@foccupation、@income、@category、@class、@rollno、@course、@subjects、@actnumber、@actname、@acttype、@bankname、@branchname)”
cmd.Parameters.AddWithValue(“@name”,txtname.text.string)
'我(尝试过但不起作用)将文本变暗为TextBox=TryCast(grd.Controls(0).Controls(0).FindControl(“textname”),text)
端接头

想想看。您有一个网格,并向行模板添加了一些文本框(txtname)。这意味着您将不会创建单个文本框,而是创建尽可能多的行。这就是为什么你不能简单地通过点击按钮1访问txtname

不清楚是否要对所有行多次调用INSERT语句,但如果是,则可以使用类似的方法(对于C#代码很抱歉,但您可能会找到如何将其转换为VB.NET):


重要提示:此任务的主要关注点是如何实际绑定网格。您必须考虑页面的生命周期。如果在页面加载时绑定网格,则可能会得到文本框的空值,而不是实际键入的值。这是因为Button1\u Click事件处理程序位于页面加载之后,而LoadPostData位于页面加载之前。LoadPostData是页面生命周期中的事件,当服务器端输入值(如所有txtname文本框)出现时从您在客户端键入的内容中获取副本。

Thanx对于您的答复,我想澄清的是,网格未绑定在页面加载上页面加载上会有一个文本框和一个按钮以及一些用户说明。在文本框中,用户将输入其注册号,并在按钮单击事件中选择命令将被执行,然后gridview中的表将显示,以及绑定的相关文本框的值。在底部有另一个按钮“submit”,它将对所有控件一次性执行insert语句。如果只有一个文本框,那么将其放入网格中就没有什么意义了。把它搬出去,让生活更简单。
foreach (GridViewRow row in grd.Rows)
{
    var txt = row.FindControl("textname") as TextBox;
    if (txt != null)
    {
       // INSERT STATEMENT with txt.Text
    }
}