我怎么保存动态创建的标签和复选框值到SQL Server [英] how I save dynamically created Labels and Checkboxes values into sql server
问题描述
我如何保存动态创建的标签和复选框值到SQL Server
保护无效EventDuration_DDL_SelectedIndexChanged(对象发件人,EventArgs的发送)
{
INT N = Int32.Parse(EventDuration_DDL.SelectedItem.ToString()); 的for(int i = 0; I< N;我++)
{ 标签NewLabel =新的Label();
NewLabel.ID =标签+我;
变种EVENTDATE = Calendar1.SelectedDate.Date.AddDays(ⅰ);
NewLabel.Text = eventDate.ToLongDateString(); 复选框newcheck =新的复选框();
newcheck.ID =复选框+我; this.Labeldiv.Controls.Add(新LiteralControl(&下;跨度类='h1size'>中));
this.Labeldiv.Controls.Add(NewLabel);
this.Labeldiv.Controls.Add(新LiteralControl(&下; /跨度>中));
this.Labeldiv.Controls.Add(新LiteralControl(< DIV CLASS ='使开关右拉式数据上='信息'>中));
this.Labeldiv.Controls.Add(newcheck);
this.Labeldiv.Controls.Add(新LiteralControl(< / DIV>中));
this.Labeldiv.Controls.Add(新LiteralControl(< BR />中));
}
} 保护无效Wizard1_FinishButtonClick(对象发件人,WizardNavigationEventArgs E)
{
con.Open();
CMD1的SqlCommand =新的SqlCommand(插入事件(事件名称,起始日期,EventDuration,开始时间,结束时间,SlotDuration)输出inserted.EventId值(@事件名称,起始日期@,@ EventDuration,@开始时间,结束时间@,@ SlotDuration),CON );
cmd1.Parameters.AddWithValue(@事件名称,EventName_TB.Text);
cmd1.Parameters.AddWithValue(@起始日期,StartDate_TB.Text);
cmd1.Parameters.AddWithValue(@ EventDuration,EventDuration_DDL.Text);
cmd1.Parameters.AddWithValue(@开始时间,StartTime_DDL.Text);
cmd1.Parameters.AddWithValue(@结束时间,EndTime_DDL.Text);
cmd1.Parameters.AddWithValue(@ SlotDuration,SlotDuration_DDL.Text);
INT32 ID =(Int32)已cmd1.ExecuteScalar(); VAR标签= Labeldiv.FindControl(标签1)作为标签;
VAR复选框= Labeldiv.FindControl(CheckBox1)的复选框;
使用(的SqlCommand CMD2 =新的SqlCommand(插入EventDays(EventDay,EventStatus)值(@ EventDay,@ EventStatus),CON))
{
INT N = Int32.Parse(EventDuration_DDL.SelectedItem.ToString()); 的for(int i = 0; I< N;我++)
{
VAR paramDay = cmd2.Parameters.Add(@ EventDay,SqlDbType.DateTime);
VAR paramStatus = cmd2.Parameters.Add(@ EventStatus,SqlDbType.Int); paramDay.Value = label.Text;
paramStatus.Value = checkbox.Checked? 1:0;
cmd2.ExecuteNonQuery(); }
}
con.Close();
}
我在EventDuration_DDL_SelectedIndexChanged创建的标签和复选框动态。
现在我想将这些值到SQL Server保存Wizard1_FinishButtonClick。
我如何保存动态创建的标签和复选框值到SQL Server
。
。
。
。
..
您必须重新创建这些动态创建的标签和复选框的按钮,单击为好,因为当用户单击Finish按钮,导致后回服务器和页面重新创建,但不执行动态标签和复选框逻辑,因此你的数据库中保存的逻辑无法找到这些控制。
我建议将您的动态标签和复选框创建逻辑到一个单独的方法,可以由被称为 EventDuration_DDL_SelectedIndexChanged()
和 Wizard1_FinishButtonClick()
,就像这样:
私人无效BuildDynamicControls()
{
INT N = Int32.Parse(EventDuration_DDL.SelectedItem.ToString()); 的for(int i = 0; I< N;我++)
{
标签NewLabel =新的Label();
NewLabel.ID =标签+我;
变种EVENTDATE = Calendar1.SelectedDate.Date.AddDays(ⅰ);
NewLabel.Text = eventDate.ToLongDateString(); 复选框newcheck =新的复选框();
newcheck.ID =复选框+我; this.Labeldiv.Controls.Add(新LiteralControl(&下;跨度类='h1size'>中));
this.Labeldiv.Controls.Add(NewLabel);
this.Labeldiv.Controls.Add(新LiteralControl(&下; /跨度>中));
this.Labeldiv.Controls.Add(新LiteralControl(< DIV CLASS ='使开关右拉式数据上='信息'>中));
this.Labeldiv.Controls.Add(newcheck);
this.Labeldiv.Controls.Add(新LiteralControl(< / DIV>中));
this.Labeldiv.Controls.Add(新LiteralControl(< BR />中));
}
}
现在在你的事件处理程序,你可以调用此方法,如:
保护无效EventDuration_DDL_SelectedIndexChanged(对象发件人,EventArgs的发送)
{
BuildDynamicControls();
}保护无效Wizard1_FinishButtonClick(对象发件人,WizardNavigationEventArgs E)
{
BuildDynamicControls();
}
另外,你可以叫 BuildDynamicControls()
在的Page_Load
。这需要照顾其他按钮的页面上破坏值时,它们会导致回发,如:
保护无效的Page_Load(对象发件人,EventArgs的发送)
{
//在这里做其他网页加载逻辑 BuildDynamicControls();
}
请注意:如果你走这条路,那么你就不会需要调用
BuildDynamicControls()
在EventDuration_DDL_SelectedIndexChanged()
或Wizard1_FinishButtonClick()
方法,因为的Page_Load
无论是在页面生命周期的事件之前发生。
块引用>how I save dynamically created Labels and Checkboxes values into sql server
protected void EventDuration_DDL_SelectedIndexChanged(object sender, EventArgs e) { int n = Int32.Parse(EventDuration_DDL.SelectedItem.ToString()); for (int i = 0; i < n; i++) { Label NewLabel = new Label(); NewLabel.ID = "Label" + i; var eventDate = Calendar1.SelectedDate.Date.AddDays(i); NewLabel.Text = eventDate.ToLongDateString(); CheckBox newcheck = new CheckBox(); newcheck.ID = "CheckBox" + i; this.Labeldiv.Controls.Add(new LiteralControl("<span class='h1size'>")); this.Labeldiv.Controls.Add(NewLabel); this.Labeldiv.Controls.Add(new LiteralControl("</span>")); this.Labeldiv.Controls.Add(new LiteralControl("<div class='make-switch pull-right' data-on='info'>")); this.Labeldiv.Controls.Add(newcheck); this.Labeldiv.Controls.Add(new LiteralControl("</div>")); this.Labeldiv.Controls.Add(new LiteralControl("<br/>")); } } protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e) { con.Open(); SqlCommand cmd1 = new SqlCommand("insert into Event(EventName,StartDate,EventDuration,StartTime,EndTime,SlotDuration) output inserted.EventId values(@EventName,@StartDate,@EventDuration,@StartTime,@EndTime,@SlotDuration)", con); cmd1.Parameters.AddWithValue("@EventName", EventName_TB.Text); cmd1.Parameters.AddWithValue("@StartDate", StartDate_TB.Text); cmd1.Parameters.AddWithValue("@EventDuration", EventDuration_DDL.Text); cmd1.Parameters.AddWithValue("@StartTime", StartTime_DDL.Text); cmd1.Parameters.AddWithValue("@EndTime", EndTime_DDL.Text); cmd1.Parameters.AddWithValue("@SlotDuration", SlotDuration_DDL.Text); Int32 id = (Int32)cmd1.ExecuteScalar(); var label = Labeldiv.FindControl("Label1") as Label; var checkbox = Labeldiv.FindControl("CheckBox1") as CheckBox; using (SqlCommand cmd2 = new SqlCommand("insert into EventDays(EventDay,EventStatus)values(@EventDay,@EventStatus)", con)) { int n = Int32.Parse(EventDuration_DDL.SelectedItem.ToString()); for (int i = 0; i < n; i++) { var paramDay = cmd2.Parameters.Add("@EventDay", SqlDbType.DateTime); var paramStatus = cmd2.Parameters.Add("@EventStatus", SqlDbType.Int); paramDay.Value = label.Text; paramStatus.Value = checkbox.Checked ? 1 : 0; cmd2.ExecuteNonQuery(); } } con.Close(); }
I have created Labels and CheckBoxes dynamically in EventDuration_DDL_SelectedIndexChanged.
now I want to save these values into sql server in Wizard1_FinishButtonClick.
how I save dynamically created Labels and Checkboxes values into sql server
. . . . ..
解决方案You have to recreate those dynamically created labels and check boxes for the button click as well, because when the user clicks the finish button, that causes a post back to the server and the page is recreated, but the dynamic label and check box logic is not executed, thus your database saving logic cannot "find" these controls.
I recommend moving your dynamic label and check box creation logic to a separate method that can be called by the
EventDuration_DDL_SelectedIndexChanged()
andWizard1_FinishButtonClick()
, like this:private void BuildDynamicControls() { int n = Int32.Parse(EventDuration_DDL.SelectedItem.ToString()); for (int i = 0; i < n; i++) { Label NewLabel = new Label(); NewLabel.ID = "Label" + i; var eventDate = Calendar1.SelectedDate.Date.AddDays(i); NewLabel.Text = eventDate.ToLongDateString(); CheckBox newcheck = new CheckBox(); newcheck.ID = "CheckBox" + i; this.Labeldiv.Controls.Add(new LiteralControl("<span class='h1size'>")); this.Labeldiv.Controls.Add(NewLabel); this.Labeldiv.Controls.Add(new LiteralControl("</span>")); this.Labeldiv.Controls.Add(new LiteralControl("<div class='make-switch pull-right' data-on='info'>")); this.Labeldiv.Controls.Add(newcheck); this.Labeldiv.Controls.Add(new LiteralControl("</div>")); this.Labeldiv.Controls.Add(new LiteralControl("<br/>")); } }
Now in your event handlers, you can call this method, like this:
protected void EventDuration_DDL_SelectedIndexChanged(object sender, EventArgs e) { BuildDynamicControls(); } protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e) { BuildDynamicControls(); }
Alternatively, you can call
BuildDynamicControls()
in thePage_Load
. This takes care of other buttons on the page destroying the values when they cause a post back, like this:protected void Page_Load(object sender, EventArgs e) { // Do other page load logic here BuildDynamicControls(); }
Note: If you go this route, then you will not need to call
BuildDynamicControls()
in theEventDuration_DDL_SelectedIndexChanged()
orWizard1_FinishButtonClick()
methods, because thePage_Load
happens before either of those events in the page life-cycle.
这篇关于我怎么保存动态创建的标签和复选框值到SQL Server的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!