我创建了一些动态控件,例如:-qmkshrobj=priority
。
这些是在 function combine (obj) {
var combined = {}
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
if (!!combined[key]) {
combined[key] = [].concat(combined[key], obj[key].values) // everything in one
// or
// combined[key].push(obj[key].values) // everything in distinct arrays
} else {
combined[key] = obj[key].values
// or
// combined[key] = [obj[key].values] // in distinct arrays
}
}
}
return combined
}
中创建的,是在ButtonClick之后创建的。
TextBox
然后当点击另一个按钮时,我想在ModalPopupExtender
上重新创建这些控件。
protected void AddGroupBTN_Click(object sender, EventArgs e)
{
GroupMPE.Show();//GroupMPE is a ModalPopupExtender
ScheduleIdHF.Value = 1; //ScheduleIdHF is a HiddenField declared in the .aspx page
CreateControls(ScheduleIdHF.Value);
...
}
private void CreateControls(string ScheduleId)
{
TableRow TR = new TableRow();
TR.ID = "tableRow1";
TableCell TC = new TableCell();
TC.ID = "tableCell1;
TextBox textBox = new TextBox();
textBox.ID = "textBox1";
TC.Controls.Add(textBox);
TR.Cells.Add(TC);
ExampleTable1.Rows.Add(TR);//ExampleTable1 is declared in the .aspx page
}
但是我希望对CreateControls的方法调用是有条件的并使用Page_PreInit
ScheduleIdHF的值。问题是protected void Page_PreInit(object sender, EventArgs e)
{
if(IsPostBack)
{
if (!string.IsNullOrEmpty(ScheduleIdHF.Value))
{
CreateControls(ScheduleIdHF.Value);
...
为空,并且不会在HiddenField
事件之后创建。有没有人有解决这个难题的解决方案?因为我希望在回发后获得HiddenField
的文本。
答案 0 :(得分:2)
您可以使用以下代码轻松访问文本框/隐藏字段值。这只是使用基本的Web编程理念,即发送到服务器的任何内容都可以在Request
对象中使用。
在PreInit事件中访问控制值的代码隐藏
protected void Page_PreInit(object sender, EventArgs e)
{
if(Page.IsPostBack) {
var x = Request[TextBox1.UniqueID];
var y = Request[ScheduleIdHF.UniqueID];
//use values of x and/or y to implement your logic
if(y != null && y == "somevalue") {
//your custom logic goes here
}
}
}
文本框标记
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:HiddenField ID="ScheduleIdHF" runat="server" Value="1010"/>
答案 1 :(得分:1)
使用Session变量存储HiddenField的值,然后在PreInit事件中检索它,如:
protected void Page_PreInit(object sender, EventArgs e)
{
if (IsPostBack)
{
string ScheduleIdHF = string.Empty;
if (Session["ScheduleIdHF"] != null)
{
ScheduleIdHF = Session["ScheduleIdHF"].ToString();
CreateControls(ScheduleIdHF);
...
}
}
}