需要DatagridView&的帮助; DataTable
。
DatagridView
OnLoad
填充SQL Server中的表中的数据DataGridView
会在网格前面添加一个新列"更新"这是一个复选框列DataTable
,但我很困惑我的逻辑是将所有选定的列添加到DataTable
并将其发送到SQL Server中的存储过程,该存储过程将更新值。
如果我没有弄错的话,我会发送一个DataTable
只有一个ID
列,然后是From
& To
(所有者)到存储过程。
如果我错了,请指导我,任何帮助都会非常感激。
答案 0 :(得分:1)
private DataTable getDataGridID()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID");
foreach (DataGridViewRow row in dgTeamDashboard.Rows)
{
if (Convert.ToBoolean(row.Cells["Update"].Value) == true)
dt.Rows.Add(row.Cells["ID"].Value);
}
return dt;
}
我现在已经发展到这一点,我有一个DataTable,其中包含已更新列的所有ID。
我很有希望,我正朝着正确的方向前进。评论我是不是
进一步更新:
我现在创建一个存储过程,接受UserDefinedTableType和destinationOwnerID作为参数,并使用提供的OwnerID更新实际表,以获取ID与DataTable记录匹配的所有那些潜在客户。
Create Procedure [activity].[udpUpdateActivityLead]
@ActivityLeadTable ActivityLeadType READONLY,
@OwnerTo int
AS
BEGIN
UPDATE [activity].[tblActivity]
set [activity].[tblActivity].[IDOwner]= @OwnerTo
from @ActivityLeadTable
where [activity].[tblActivity].[ID]=[@ActivityLeadTable].[ID];
END
最后我在我的UI中使用了这个功能,就像GEM一样。快乐的结局......我现在可以去睡觉了......
public void updateActivityLead()
{
SqlConnection con = new SqlConnection(OpSupLib.MyConnectionString);
SqlCommand cmd = new SqlCommand();
if (con.State == System.Data.ConnectionState.Closed)
con.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "[activity].[udpUpdateActivityLead]";
SqlParameter p1 = new SqlParameter();
p1.ParameterName = "@ActivityLeadTable";
p1.Value = getDataGridID();
cmd.Parameters.Add(p1);
SqlParameter p2 = new SqlParameter();
p2.ParameterName = "@OwnerTo";
p2.Value = ((ComboBoxItem)cmbUpdateTo.SelectedItem).HiddenValue;
cmd.Parameters.Add(p2);
cmd.Connection = con;
cmd.ExecuteNonQuery();
if (con.State == System.Data.ConnectionState.Open)
con.Close();
}