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
最後,我在我的用戶界面中得到了這個功能,就像一個創業板。快樂的結局......我可以現在就睡覺......
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();
}
重複http://stackoverflow.com/questions/9410018/c-sharp-sql-update-multiple-rows –