![](/img/trans.png)
[英]Itemcommand not firing on button click event in a datalist using c#
[英]button and itemcommand event sequence
背景資料 :
work_order
btn_Start
。 該按鈕填充在每個集合的末尾 btn_Start
的目標是執行數據庫插入,該插入需要包括單擊按鈕的數據集中的work_order
值(因此,插入可以綁定到work_order值。) btn_Start
碼:
protected void btn_Start(object sender, EventArgs e)
{
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["nothanks"].ConnectionString))
{
String query = "INSERT INTO [TimeTest] ([Starttime], [Work_Order]) VALUES (@Starttime, @Work_Order)";
using (SqlCommand CCC = new SqlCommand(query, connection))
{
connection.Open();
CCC.CommandType = CommandType.Text;
CCC.Parameters.Add("@Starttime", SqlDbType.DateTime).Value = DateTime.Now;
CCC.Parameters.Add("@Work_Order", SqlDbType.Int).Value = lb_User1.Text.ToString();
CCC.ExecuteNonQuery();
}
}
}
work_order
列的文本,我正在使用itemcommand
事件來傳播標簽( lb_User1
)。 DataList1_ItemCommand`代碼:
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
DataList2.SelectedIndex = e.Item.ItemIndex;
lb_User1.Text = (DataList2.SelectedItem.FindControl("Work_OrderLabel4") as Label).Text;
}
btn_Start
推, lb_User1
用正確的信息更新。 問題 :當btn_Start
被點擊時,既btn_Start
和DataList1_ItemCommand
火災。 但是DataList1_ItemCommand
在 btn_Start
之后 btn_Start
。 這意味着lb_User1
尚未使用正確的信息更新,因此插入無法按需工作。
筆記:
lb_User1
,我計划直接轉到SQL插入。 lb_User1
用於代碼測試(因此我可以看到發生了什么)
我的目標是使用從數據列表( Work_OrderLabel4
)中獲取的數據進行SQL插入。 如果我可以實現這個目標的更好的方法,也可以解決問題。
btn_Start
不會成為數據列表中的唯一按鈕。 一種可能的解決方案是從具有兩個事件並且僅在itemcommand
事件下執行操作itemcommand
,但是如何在不涉及其各自事件的情況下分離出哪個按鈕觸發。
目標 :我正在嘗試獲取每個嵌入式開始按鈕,以獲取其相應的work_order
值,以供在SQL插入中使用。 以上是試圖完成此任務的過程,我已經差不多了,但是遇到了上述問題。 我願意接受其他方式來完成此任務(請參見說明圖片)
附加信息:
protected void DL_Main_ItemCommand(object source, DataListCommandEventArgs e)
{
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["test"].ConnectionString))
{
String query = "INSERT INTO [TimeTest] ([Starttime], [Work_Order]) VALUES (@Starttime, @Work_Order)";
using (SqlCommand CCC = new SqlCommand(query, connection))
{
connection.Open();
CCC.CommandType = CommandType.Text;
CCC.Parameters.Add("@Starttime", SqlDbType.DateTime).Value = DateTime.Now;
// All you need is the value of Work_OrderLabel4 of the selected item so just do it like this.
CCC.Parameters.Add("@Work_Order", SqlDbType.Int).Value = (DL_Main.SelectedItem.FindControl("Work_OrderLabel") as Label).Text;
CCC.ExecuteNonQuery();
}
}
}
擺脫btnStart
並將下面的代碼放入DataList1_ItemCommand
。 我更改的唯一一行是帶有我的評論的一行:
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["nothanks"].ConnectionString))
{
String query = "INSERT INTO [TimeTest] ([Starttime], [Work_Order]) VALUES (@Starttime, @Work_Order)";
using (SqlCommand CCC = new SqlCommand(query, connection))
{
connection.Open();
CCC.CommandType = CommandType.Text;
CCC.Parameters.Add("@Starttime", SqlDbType.DateTime).Value = DateTime.Now;
// All you need is the value of Work_OrderLabel4 of the selected item so just do it like this.
CCC.Parameters.Add("@Work_Order", SqlDbType.Int).Value = (DataList2.SelectedItem.FindControl("Work_OrderLabel4") as Label).Text;
}
CCC.ExecuteNonQuery();
}
}
另外,請注意,為控件提供比DataList1更好的名稱。 也許是DataListTimeTest,因為它處理TimeTest表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.