<div id="showDetail" runat="server"></div>
在后台页面中,给div添加InnerHtml,语句如下,其中变量“strForm ”中包含了很多控件。
this.showDetail.InnerHtml = "<form id='myForm' action='' method='post'>" + strForm + "</form>";
生成完之后,页面代码如下:
<div id="ContentPlaceHolder_showDetail"><form id='myForm' action='' method='post'><div class="myFormCss"><div><label for='user_code'>卡号:</label><input type='text' class='textbox' style='width:100px;' id='user_code' name='user_code'/></div><div><label for='user_name'>姓名:</label><input type='text' class='textbox' style='width:150px;' id='user_name' name='user_name'/></div><div><label for='company_code'>公司编号:</label><select class='textbox' style='width:150px;' id='company_code' name='company_code'><option value='0'>-----请选择-----</option></select></div><div><label for='dept_code'>部门编号:</label><select class='textbox' style='width:150px;' id='dept_code' name='dept_code'><option value='0'>-----请选择-----</option></select></div><div><label for='level_code'>职位编号:</label><select class='textbox' style='width:150px;' id='level_code' name='level_code'><option value='0'>-----请选择-----</option></select></div><div><label for='group_code'>权限编号:</label><select class='textbox' style='width:150px;' id='group_code' name='group_code'><option value='0'>-----请选择-----</option></select></div><div><label for='email'>邮箱:</label><input type='text' class='textbox' style='width:300px;' id='email' name='email'/></div></div></form></div>
现在我想在后台页面中获取div里面的各个控件,然后对其进行操作,比如我想获取控件company_code,应该如何实现?
我用了FindControl方法,可是查询出来竟然是null,而且div里的控件数却只有一个,不知道什么原因,获取语句如下:
DropDownList ddlCompany = showDetail.FindControl("company_code") as DropDownList;
int c = showDetail.Controls.Count;//控件数为0
求解答,谢谢,在线等候!
15 个解决方案
#1
貌似你少了红色的部分了吧??
this.showDetail.InnerHtml = "<form id='myForm' action='' runat='server' method='post'>" + strForm + "</form>";
this.showDetail.InnerHtml = "<form id='myForm' action='' runat='server' method='post'>" + strForm + "</form>";
#2
控件怎么加的?
#3
是哦,少了ruant="server"后台是调不到的
#4
加上了也不管用。
#5
后台写代码加的。因为页面里的所有控件是可以由客户自定义的,所以都采用了动态生成的方法。
#6
以讹传讹
#7
后台代码怎么写的
#8
IDataReader dr = SqlHelper.ExecuteReader(Common.sql_tablecolumns(strTableName, "Form"));
while (dr.Read())
{
strForm = strForm + "<div>";
strForm = strForm + "<label for='" + dr[0].ToString() + "'>" + dr[1].ToString() + ":</label>";
string strStyle = "style='width:" + dr[2].ToString() + "px;'";
if (dr[3].ToString() == "DATETIME")
{
strForm = strForm + "<input type='text' class='textbox date_input' " + strStyle + " id='" + dr[0].ToString().ToLower() + "' name='" + dr[0].ToString() + "' value='" + strToday + "'/>";
}
else
{
if (dr[4].ToString() == "TEXTBOX")
{
if (dr[0].ToString().ToLower() == "user_id")
{
strForm = strForm + "<input type='text' class='textbox' " + strStyle + " id='" + dr[0].ToString().ToLower() + "' name='" + dr[0].ToString() + "' value='" + UserID + "'/>";
}
else
{
strForm = strForm + "<input type='text' class='textbox' " + strStyle + " id='" + dr[0].ToString().ToLower() + "' name='" + dr[0].ToString() + "'/>";
}
}
else
{
strForm = strForm + "<select runat=\"server\" class='textbox' " + strStyle + " id='" + dr[0].ToString().ToLower() + "' name='" + dr[0].ToString() + "'>";
strForm = strForm + "<option value='0'>" + WFUtility.ResourceCenter.Resource.GetResourceString("MESSAGE_6") + "</option>";
if (dr[7].ToString() == "LIST")
{
string[] listitems = dr[5].ToString().Split(',');
foreach (string listitem in listitems)
{
strForm = strForm + "<option value='" + listitem + "'>" + listitem + "</option>";
}
}
else
{
string[] listitems = dr[5].ToString().Split('|');
if (listitems.Length >= 3)
{
DataTable dt = WFDDL.Application.ApplicationResult.GetTableDetail(listitems[0]);
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow anRow = dt.Rows[i];
string strText = "";
string strValue = anRow[listitems[2]].ToString();
string[] listTextNames = listitems[1].Split(',');
foreach (string anTextName in listTextNames)
{
if (!string.IsNullOrEmpty(strText))
strText += "(";
strText += anRow[anTextName].ToString();
if (strText.IndexOf("(") != -1)
strText += ")";
}
if (dr[0].ToString() == "user_id" && strValue == UserID)
strForm = strForm + "<option value='" + strValue + "' selected>" + strText + "</option>";
else
strForm = strForm + "<option value='" + strValue + "'>" + strText + "</option>";
}
}
}
strForm = strForm + "</select>";
//strForm = strForm + "<input type='text' class='textbox' " + strStyle + " id='" + dr[0].ToString() + "' name='" + dr[0].ToString() + "'/>";
}
}
strForm = strForm + "</div>";
}
strForm = "<div class=\"myFormCss\">" + strForm + "</div>";
this.showDetail.InnerHtml = "<form id='myForm' runat=\"server\" action='' method='post'>" + strForm + "</form>";
#9
代码如上面
#10
看到了,你说下你想做什么事吧
#11
加上 runat="server" 就行了
#12
我不明白你什么意思?你要是说我这方法不行,那你可以给出好的建议啊。
因为页面所要呈现的内容是不固定的,用户会对要呈现的内容做个基础信息维护,然后读取他所设置的基础信息呈现到页面上。所以不能在前台用控件写死,只能在后台根据维护进去的信息一个个增加控件。现在已可以实现这个添加控件的功能。
控件都添加完后,我现在需要在后台获取控件,对控件进行操作。
#13
你现在的方法不是不行,而是它有适用范围。 我不知道你具体要做什么,自然没办法说它行不行。
你不告诉我需求,我怎么告诉你方案。
直接说需求就行
你不告诉我需求,我怎么告诉你方案。
直接说需求就行
#14
我就是想通过像下面的方法一样,获取出控件啊,然后操作控件。
DropDownList ddlCompany = showDetail.FindControl("company_code") as DropDownList;
#15
那这样就是不行的。
你现在的写法只能获取控件的选择值
通过Request.Form["ControlName"] 这种方式
你现在的写法只能获取控件的选择值
通过Request.Form["ControlName"] 这种方式
#1
貌似你少了红色的部分了吧??
this.showDetail.InnerHtml = "<form id='myForm' action='' runat='server' method='post'>" + strForm + "</form>";
this.showDetail.InnerHtml = "<form id='myForm' action='' runat='server' method='post'>" + strForm + "</form>";
#2
控件怎么加的?
#3
是哦,少了ruant="server"后台是调不到的
#4
加上了也不管用。
#5
后台写代码加的。因为页面里的所有控件是可以由客户自定义的,所以都采用了动态生成的方法。
#6
以讹传讹
#7
后台代码怎么写的
#8
IDataReader dr = SqlHelper.ExecuteReader(Common.sql_tablecolumns(strTableName, "Form"));
while (dr.Read())
{
strForm = strForm + "<div>";
strForm = strForm + "<label for='" + dr[0].ToString() + "'>" + dr[1].ToString() + ":</label>";
string strStyle = "style='width:" + dr[2].ToString() + "px;'";
if (dr[3].ToString() == "DATETIME")
{
strForm = strForm + "<input type='text' class='textbox date_input' " + strStyle + " id='" + dr[0].ToString().ToLower() + "' name='" + dr[0].ToString() + "' value='" + strToday + "'/>";
}
else
{
if (dr[4].ToString() == "TEXTBOX")
{
if (dr[0].ToString().ToLower() == "user_id")
{
strForm = strForm + "<input type='text' class='textbox' " + strStyle + " id='" + dr[0].ToString().ToLower() + "' name='" + dr[0].ToString() + "' value='" + UserID + "'/>";
}
else
{
strForm = strForm + "<input type='text' class='textbox' " + strStyle + " id='" + dr[0].ToString().ToLower() + "' name='" + dr[0].ToString() + "'/>";
}
}
else
{
strForm = strForm + "<select runat=\"server\" class='textbox' " + strStyle + " id='" + dr[0].ToString().ToLower() + "' name='" + dr[0].ToString() + "'>";
strForm = strForm + "<option value='0'>" + WFUtility.ResourceCenter.Resource.GetResourceString("MESSAGE_6") + "</option>";
if (dr[7].ToString() == "LIST")
{
string[] listitems = dr[5].ToString().Split(',');
foreach (string listitem in listitems)
{
strForm = strForm + "<option value='" + listitem + "'>" + listitem + "</option>";
}
}
else
{
string[] listitems = dr[5].ToString().Split('|');
if (listitems.Length >= 3)
{
DataTable dt = WFDDL.Application.ApplicationResult.GetTableDetail(listitems[0]);
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow anRow = dt.Rows[i];
string strText = "";
string strValue = anRow[listitems[2]].ToString();
string[] listTextNames = listitems[1].Split(',');
foreach (string anTextName in listTextNames)
{
if (!string.IsNullOrEmpty(strText))
strText += "(";
strText += anRow[anTextName].ToString();
if (strText.IndexOf("(") != -1)
strText += ")";
}
if (dr[0].ToString() == "user_id" && strValue == UserID)
strForm = strForm + "<option value='" + strValue + "' selected>" + strText + "</option>";
else
strForm = strForm + "<option value='" + strValue + "'>" + strText + "</option>";
}
}
}
strForm = strForm + "</select>";
//strForm = strForm + "<input type='text' class='textbox' " + strStyle + " id='" + dr[0].ToString() + "' name='" + dr[0].ToString() + "'/>";
}
}
strForm = strForm + "</div>";
}
strForm = "<div class=\"myFormCss\">" + strForm + "</div>";
this.showDetail.InnerHtml = "<form id='myForm' runat=\"server\" action='' method='post'>" + strForm + "</form>";
#9
代码如上面
#10
看到了,你说下你想做什么事吧
#11
加上 runat="server" 就行了
#12
我不明白你什么意思?你要是说我这方法不行,那你可以给出好的建议啊。
因为页面所要呈现的内容是不固定的,用户会对要呈现的内容做个基础信息维护,然后读取他所设置的基础信息呈现到页面上。所以不能在前台用控件写死,只能在后台根据维护进去的信息一个个增加控件。现在已可以实现这个添加控件的功能。
控件都添加完后,我现在需要在后台获取控件,对控件进行操作。
#13
你现在的方法不是不行,而是它有适用范围。 我不知道你具体要做什么,自然没办法说它行不行。
你不告诉我需求,我怎么告诉你方案。
直接说需求就行
你不告诉我需求,我怎么告诉你方案。
直接说需求就行
#14
我就是想通过像下面的方法一样,获取出控件啊,然后操作控件。
DropDownList ddlCompany = showDetail.FindControl("company_code") as DropDownList;
#15
那这样就是不行的。
你现在的写法只能获取控件的选择值
通过Request.Form["ControlName"] 这种方式
你现在的写法只能获取控件的选择值
通过Request.Form["ControlName"] 这种方式