0

伙计们,我有一个网格,需要从数据库中检索文本输入,然后插入到数据库中。网格如下所示

从上面它允许用户将任意多的行传递给数据库,只要他愿意。我使用下面的方法。

   private void insert()
        {
            connection.Open();

            for(int i=0; i< gvAdditionalDetails.Rows.Count ; i++)
            {
                string sql = "insert into [CONTACT_DETAILS] (type,description,contactID) VAlUES (@row1,@row2,@contactID )";

                SqlCommand cmd = new SqlCommand(sql, connection);
                cmd.CommandType = CommandType.Text;

                cmd.Parameters.AddWithValue("@row1", gvAdditionalDetails.Rows[i].Cells[1].Text.Trim());
                cmd.Parameters.AddWithValue("@row2", gvAdditionalDetails.Rows[i].Cells[2].Text.Trim());
                cmd.Parameters.AddWithValue("@contactID", 39);
                cmd.ExecuteNonQuery();
            }
            connection.Close();
        }

上面的方法循环抛出了我的网格,但是对于具有下拉选择和具有 tetxbox 控件的描述的列类型返回 null。我不能单独调用这个控件,因为它们是在网格中声明的。如何从下拉列表中检索所选项目的文本以及从文本框中插入的文本。代码 gvAdditionalDetails.Rows[i].Cells[1].Text.Trim()返回空值。

4

4 回答 4

3
INSERT INTO Table ( Column1, Column2 ) VALUES
( Value1, Value2 ), ( Value1, Value2 )
于 2013-09-24T04:01:18.240 回答
3

您需要参考 gridview 行内的控件。

private void insert()
        {
            connection.Open();

            for(int i=0; i< gvAdditionalDetails.Rows.Count ; i++)
            {
                string sql = "insert into [CONTACT_DETAILS] (type,description,contactID) VAlUES (@row1,@row2,@contactID )";

                SqlCommand cmd = new SqlCommand(sql, connection);
                cmd.CommandType = CommandType.Text;

                cmd.Parameters.AddWithValue("@row1", ((DropdownList)gvAdditionalDetails.Rows[i].FindControl("DropDownListType")).SelectedItem.Text.Trim());
                cmd.Parameters.AddWithValue("@row2", ((TextBox)gvAdditionalDetails.Rows[i].FindControl("txtDescription")).Text.Trim());
                cmd.Parameters.AddWithValue("@contactID", 39);
                cmd.ExecuteNonQuery();
            }
            connection.Close();
        }
于 2013-09-24T05:12:03.717 回答
0
INSERT INTO Table (Column1, Column2)
select value1, value2
union all
select value1, value2
union all
select value1, value2
于 2013-09-24T04:29:28.440 回答
0

谢谢大家。我循环并检索输入,如下所示。我不确定这是最好的方法,但它确实对我有用。

  private void insert()
        {
            connection.Open();


            for(int i=0; i< gvAdditionalDetails.Rows.Count ; i++)
            {
                DropDownList DropDownListType =
                         (DropDownList)gvAdditionalDetails.Rows[i].Cells[1].FindControl("DropDownListType");



                TextBox TextBoxDescription =
                (TextBox)gvAdditionalDetails.Rows[i].Cells[i].FindControl("txtDescription");

                string sql = "insert into [CONTACT_DETAILS] (type,description,contactID) VAlUES (@row1,@row2,@contactID )";

                SqlCommand cmd = new SqlCommand(sql, connection);
                cmd.CommandType = CommandType.Text;

                cmd.Parameters.AddWithValue("@row1", DropDownListType.SelectedItem.Text.Trim());
                cmd.Parameters.AddWithValue("@row2", TextBoxDescription.Text.Trim());
                cmd.Parameters.AddWithValue("@contactID", 39);
                cmd.ExecuteNonQuery();
            }
            connection.Close();
        }
于 2013-09-24T04:49:30.177 回答