首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么第二个列值没有插入到我的数据库中?

为什么第二个列值没有插入到我的数据库中?
EN

Stack Overflow用户
提问于 2019-05-22 17:53:14
回答 1查看 73关注 0票数 1

我的数据库中有一个表PrescTest(idPrescTest、nameTest

在网格视图中,它应该插入第二个列值("NameTest"),但是却在表中插入("idTest"),这是为什么呢?

我尝试更改c#中的列计数,但仍然没有任何更改

代码语言:javascript
复制
CREATE TABLE [dbo].[PrescTest](
[idPrescTest] [int] IDENTITY(1,1) NOT NULL,
[nameTest] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_PrescEx] PRIMARY KEY CLUSTERED 
(
[idPrescTest] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO



 <asp:GridView ID="GridView1" runat="server" DataKeyNames="idTest" Width="1121px" CellPadding="0" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False" >
            <AlternatingRowStyle BackColor="White" />
            <Columns>
                <asp:CheckBoxField />

                <asp:TemplateField>

                    <ItemTemplate>
                        <asp:CheckBox ID="CheckBox1" runat="server" />
                    </ItemTemplate>

                </asp:TemplateField>

            <asp:BoundField HeaderText="idTest" DataField="idTest" />
            <asp:BoundField HeaderText="nameTest" DataField="nameTest" />
            <asp:BoundField HeaderText="TestCost" DataField="TestCost" />
            <asp:BoundField HeaderText="TestReduction" DataField="TestReduction" />

            </Columns>
</asp:GridView>





protected void Button1_Click1(object sender, EventArgs e)
    {
        foreach (GridViewRow row in GridView1.Rows)
        {
            if ((row.FindControl("CheckBox1") as CheckBox).Checked)
            {
                SqlCommand cmd = new SqlCommand("insert into PrescTest (nameTest) values (@Test)", conn);
                cmd.Parameters.Add("Test", SqlDbType.NVarChar, 50).Value = row.Cells[2].Text;

                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();

            }
        }
    }

好吧,所以我找到了一个解决方案,但我不确定为什么它有效……

我只把这段代码放在BoundFields后面

代码语言:javascript
复制
<asp:TemplateField>

                <ItemTemplate>
                    <asp:CheckBox ID="CheckBox1" runat="server" />
                </ItemTemplate>

            </asp:TemplateField>
EN

Stack Overflow用户

发布于 2019-05-22 18:22:28

这可能对你有用

使用HiddenField

代码语言:javascript
复制
<asp:GridView ID="GridView1" runat="server" DataKeyNames="idTest" 
     Width="1121px" CellPadding="0" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False">
     <AlternatingRowStyle BackColor="White" />
     <Columns>
         <asp:CheckBoxField />
         <asp:TemplateField>
             <ItemTemplate>
                 <asp:CheckBox ID="CheckBox1" runat="server" />
                 <asp:HiddenField ID="hdnnameTest" runat="server" Value='<%# Eval("nameTest")%>' />
             </ItemTemplate>
         </asp:TemplateField>
         <asp:BoundField HeaderText="idTest" DataField="idTest" />
         <asp:BoundField HeaderText="nameTest" DataField="nameTest" />
         <asp:BoundField HeaderText="TestCost" DataField="TestCost" />
         <asp:BoundField HeaderText="TestReduction" DataField="TestReduction" />
    </Columns>
</asp:GridView>

在代码隐藏文件中

代码语言:javascript
复制
protected void Button1_Click1(object sender, EventArgs e)
{
    foreach (GridViewRow row in GridView1.Rows)
    {
        if ((row.FindControl("CheckBox1") as CheckBox).Checked)
        {
            SqlCommand cmd = new SqlCommand("insert into PrescTest (nameTest) values (@Test)", conn);
            cmd.Parameters.Add("Test", SqlDbType.NVarChar, 50).Value = ((HiddenField)row.FindControl("hdnnameTest")).Value;

            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();

        }
    }
}
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56254075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档