背景信息:按钮和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