Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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_Gridview - Fatal编程技术网

C# 如何编辑和更新标题不是静态和未知的GridView

C# 如何编辑和更新标题不是静态和未知的GridView,c#,asp.net,gridview,C#,Asp.net,Gridview,在数据库中创建一个带有客户名称(在文本框中输入)的表。创建的表字段是列表框中的项目。比如: com = new SqlCommand("CREATE TABLE " + Label6.Text + " (Locations nvarchar(20), " + ListBox3.Items[0].ToString().Trim() + " nvarchar(5))", con); con.Open(); com.ExecuteNonQuery(); con.Close(); for (int i

在数据库中创建一个带有客户名称(在
文本框
中输入)的表。创建的表字段是
列表框中的项目。比如:

com = new SqlCommand("CREATE TABLE " + Label6.Text + " (Locations nvarchar(20), " + ListBox3.Items[0].ToString().Trim() + " nvarchar(5))", con);
con.Open();
com.ExecuteNonQuery();
con.Close();

for (int i = 1; i <= ListBox3.Items.Count-1; i++)
{
    com = new SqlCommand("ALTER TABLE " + Label6.Text + " ADD " + ListBox3.Items[i].Text.Trim() + " nvarchar(5)", con);
    con.Open();
    com.ExecuteNonQuery();
    con.Close();
}
SqlCommand com = new SqlCommand("SELECT * FROM " + Label6.Text + "", con);
SqlDataAdapter da = new SqlDataAdapter(com);
DataTable dt = new DataTable();
da.Fill(dt);
GridView2.DataSource = dt;
GridView2.DataBind();
GridView的asp代码为:

<Columns>
    <asp:CommandField ShowEditButton="True" />
</Columns>

因此,我希望第一列是只读的。 我想编辑
GridView
并更新数据库中的customer(参考Label6.Text)表。注意:我希望GridView只接受整数

我的数据库表和Gridview的图像显示在以下链接中。请帮忙。多谢各位


要仅接受数字输入,可以使用jQuery插件。提出了一些可能性

这种方法使您容易受到攻击。通过构建这样的SQL语句,您的整个应用程序非常脆弱


要更新数据库,您可以采用与从表中创建/选择数据库类似的方式。

首先,您应该重新思考您的方法,并更改所有SQL语句以使用SQL参数。现在,您的代码极易受到SQL注入的攻击!这里有很多例子,或者只是看看

此外,我认为让用户动态创建表和数据不是一个好的决定。无论如何,如果您真的想以这种方式实现,您可以动态添加列

for (int i = 0; i < dt.Columns.Count; i++)
{
    DataColumn dc = dt.Columns[i];
    BoundField bf = new BoundField();
    bf.ReadOnly = i == 0;  // will take care of setting controls to readonly in column 0
    bf.DataField = dc.ColumnName;
    GridView1.Columns.Add(bf);
}
for(int i=0;i
不幸的是,添加一个只允许数字的列并不容易。在这种情况下,有必要动态创建templateField并将其添加到列中。看看这个

编辑

如果试图动态地向表中添加值,则应使用SQL参数。(例如
插入tblXYZ(abc,def)值(@valueForABC,@valueForDEF)

不幸的是,现在不可能使用SQL参数来参数化表名列名。所以试着

…将字符限制为A-Z、A-Z、0-9、'.'、'.'和''-和 然后对数据库使用适当的括号(例如。 []对于SQL Server,我相信)来概括整个事情


如Jon Skeet的中所示。

您需要确保先设置
Label6.Text=Label6.Text+“(blah NVARCHAR(5));删除数据库;-”
。然后阅读SQL注入。请您指导我如何修改代码,使其不受修改代码的攻击。第一次使用这种语言。请按照给定的细节重写答案。我想更新数据库表中的
GridView
值。我附上了一张图片,上面显示了我想要的东西。
GridView
的asp html代码就是我要查找的内容和相应的更新方法。请帮忙。
for (int i = 0; i < dt.Columns.Count; i++)
{
    DataColumn dc = dt.Columns[i];
    BoundField bf = new BoundField();
    bf.ReadOnly = i == 0;  // will take care of setting controls to readonly in column 0
    bf.DataField = dc.ColumnName;
    GridView1.Columns.Add(bf);
}