私はGridviewをいくつかのTextBoxes、ドロップダウンメニューとチェックボックスをそれぞれの80行に配置し、OnRowEditイベントとOnRowDataBoundイベントをグリッドに関連付けました。 これは私がグリッド更新するために何をすべきかである:選択された行は、他の人と有する関係によれば、エディットモード(7秒)の行スイッチにC#非常に遅いGridviewアップデート。
- のImageButtonをクリックして、各行のチェックボックスを移入 、すべての行をループチェックボックスの状態を取得する:クリックイベントは、制御データを収集し、SQLに行データを保存し
- コラム:
- のImageButton編集したデータ(13秒)
- 行が保存されます行をクリックSQL に保存します。
私は自己啓発であり、改善する可能性が最も高いものがあります。誰かが見て、クリティカルな時間のかかる操作が何であるか、そして物事をスピードアップする方法を指摘してください。 - おかげで、マーティン
OnRowEdit:
protected void OnRowEditing(object sender, GridViewEditEventArgs e)
{
Gridview_Milestones.SelectedIndex = -1;
int rowIndex = e.NewEditIndex;
SelectedMSRow.Text = Convert.ToString(rowIndex);
SelectedMSRowValue.Text = Convert.ToString(Gridview_Milestones.DataKeys[rowIndex].Value);
CheckBox CheckedOrNot = Gridview_Milestones.Rows[rowIndex].FindControl("checkboxCustomerRequired") as CheckBox;
LabelCRD.Text = Convert.ToString(CheckedOrNot.Checked);
}
OnRowDataBound:
protected void OnRowDataBoundMS(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
CheckBox CBTr = e.Row.FindControl("CheckboxTriggers") as CheckBox;
if ((e.Row.RowState & DataControlRowState.Edit) > 0)
{
if (LabelCRD.Text == "True")
{
TextBox TBresult1 = e.Row.FindControl("TextBoxDefaultDays") as TextBox;
TBresult1.Visible = false;
}
else
{
TextBox TBresult1 = e.Row.FindControl("TextBoxDefaultDays") as TextBox;
TBresult1.Visible = true;
}
DropDownList DDL1 = e.Row.FindControl("DDOwnerGroup") as DropDownList;
DropDownList DDL2 = e.Row.FindControl("DDOwner") as DropDownList;
Label LBL1 = e.Row.FindControl("LabelDefaultOwnerGroupEdit") as Label;
Label LBL2 = e.Row.FindControl("LabelDefaultOwnerEdit") as Label;
DDL1.SelectedValue = Convert.ToString(LBL1.Text);
DDL2.DataBind();
DDL2.SelectedValue = Convert.ToString(LBL2.Text);
CBTr.Visible = false;
}
if (!string.IsNullOrEmpty(SelectedMSRow.Text))
{
DataRowView rowView = (DataRowView)e.Row.DataItem;
int myDataKey = Convert.ToInt32(rowView["ID"]);
CBTr.Checked = SetCheckBoxTrigger(myDataKey);
}
}
}
保存する行データ:
protected void UpdateMilesStones(Object sender, EventArgs e)
{
UpdateTriggers();
int rowIndex = Convert.ToInt32(SelectedMSRow.Text);
Label DataKey = Gridview_Milestones.Rows[rowIndex].FindControl("LabelEditID") as Label;
DropDownList DDL1 = Gridview_Milestones.Rows[rowIndex].FindControl("DDOwnerGroup") as DropDownList;
CheckBox CKB1 = Gridview_Milestones.Rows[rowIndex].FindControl("checkboxCustomerRequiredEdit") as Checkbox;
TextBox TB1 = Gridview_Milestones.Rows[rowIndex].FindControl("TextBoxDefaultDays") as TextBox;
SqlConnection objConn = new SqlConnection("XXXXX");
SqlCommand objCommand = new SqlCommand(@"Update ...", objConn);
objCommand.Parameters.Add(".....")
objConn.Open();
objCommand.ExecuteNonQuery();
objConn.Close();
Gridview_Milestones.DataBind();
Gridview_Milestones.EditIndex = -1;
}
保存列データ:
protected void UpdateTriggers()
{
DeleteOldTriggers();
foreach (GridViewRow row in Gridview_Milestones.Rows)
{
string DataKey = Gridview_Milestones.DataKeys[row.RowIndex].Value.ToString();
if (((CheckBox)row.FindControl("CheckboxTriggers")).Checked)
{
SqlConnection objConn = new SqlConnection("XXXXXX");
SqlCommand objCommand = new SqlCommand(@"Insert into EPC_Triggers (MilestoneID, triggeredBy) Values (@IDMS,@IDRow)", objConn);
objCommand.Parameters.Add("@IDMS", SqlDbType.Int).Value = Convert.ToInt32(SelectedMSRowValue.Text);
objCommand.Parameters.Add("@IDRow", SqlDbType.Int).Value = Convert.ToInt32(DataKey);
objConn.Open();
objCommand.ExecuteNonQuery();
objConn.Close();
}
}
Gridview_Milestones.Columns[13].Visible = false;
}
クラシックasp.netまたはmvcを使用していますか? –
ddl2のデータソースは何ですか? – TZHX
なぜそれはとても難しいですか?データベースプロバイダにDataAdapterを使用してみてください。 – GrApDev