背景信息:按鈕和ItemCommand事件序列
- 我有一個SQL連接數據列表,其中一列被稱爲
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
事件傳播的標籤()。 - 這種運作良好,每次
btn_Start
被推動時,與正確的信息更新。 的,我打算去直接到SQL插入。用於代碼測試(這樣我就可以看到這是怎麼回事)
我目標是從數據列表(
Work_OrderLabel4
)與抓起數據做SQL插入。如果我能夠實現這個目標,那麼也可以解決這個問題。btn_Start
不會是數據專家中唯一的按鈕。一個可能的解決方案是從兩個事件開始,只在itemcommand
事件下做事,但是如何分離出哪個按鈕觸發,而不涉及它們各自的事件。
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
,既btn_Start
和DataList1_ItemCommand
火災。但DataList1_ItemCommand
火災後btn_Start
。這意味着未更新正確的信息,因此插入無法按需要工作。
注意:不需要
目的:我試圖讓每個嵌入啓動按鈕,抓住它在SQL插入使用相應work_order
值。以上是試圖完成這項任務,我幾乎在那裏,但我有上述問題。我打開其他的方式來完成這項任務(見澄清圖片)
附加信息:
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();
}
}
}
不知道你在做什麼。爲什麼當點擊btn_Start時,兩者都被解僱?代碼中沒有顯示。 – CodingYoshi
在DataGrid控件中單擊任何按鈕時會引發ItemCommand事件。代碼中沒有任何事情發生,它是itemcommand的一個函數。根據我的理解,這是必要的,所以我抓住正確的標籤值,如果我的datalist有多條記錄,我需要相應的按鈕點擊以獲取正確的工作訂單值。 – Itomship
我在一個客觀的部分添加,以幫助澄清我想要做的事情。 – Itomship