C# 希登菲尔德网络控制
及 我试着C# 希登菲尔德网络控制,c#,asp.net,hiddenfield,C#,Asp.net,Hiddenfield,及 我试着 foreach (Control c in plc.Controls) { System.Web.UI.HtmlControls.HtmlTable Survey_Inner = (System.Web.UI.HtmlControls.HtmlTable)c.FindControl("Survey_Inner"); foreach (System.Web.UI.H
foreach (Control c in plc.Controls)
{
System.Web.UI.HtmlControls.HtmlTable Survey_Inner = (System.Web.UI.HtmlControls.HtmlTable)c.FindControl("Survey_Inner");
foreach (System.Web.UI.HtmlControls.HtmlTableRow r in Survey_Inner.Rows)
{
foreach (Control ctr in r.Cells)
{
foreach (Control ct in ctr.Controls)
{
if (ct.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
{
string freeTxtQues = ?? ;
string TextCevap = ((System.Web.UI.WebControls.TextBox)ct).Text;
string deger = ct.ID.ToString();
Guid QuestionId = new Guid(deger.Substring(4));
SaveAnswers(this._PortalUserHelper.UserProxy.ContactId, EgitimKatilimcisi, QuestionId, TextCevap, freeTxtQues);
}
但返回我的错误。“用户代码未处理InvalidCastException。”
'System.Web.UI.WebControls.TextBox'türündeki nesne'System.Web.UI.WebControls.HiddenField'türüne atılamadı
我正在尝试访问hiddenfields值并将其设置为freeTxtQues值,但目前无法执行此操作。有什么可以帮我的吗?很难理解你的问题,但我会抛出一些东西
创建动态控件时,需要在Init事件上创建它们,以便在应用ViewState时,他会找到控件并设置其值。如果您不是在Init中创建控件,而是稍后创建,您将发现该控件没有假定的值 您的意思是如何获取值(txthfield.value)?不清楚问题是什么,是否要扩展我很抱歉我一直很匆忙:我想要的是将字符串freettxtques值设置为hiddenfields值。Hiddenfield值有我的调查问题文本,我想将它们写为我的调查答案名称。所以每次freetext创建一个hiddenfield,创建并存储我的问题文本,在Submit_单击时,我收集该字符串并作为我的答案名发送,至少我尝试了这个。我在收集部分时遇到问题。我尝试了一些东西,但在上面写下该部分时给了我错误。您正在尝试将TextBox转换为隐藏字段,因为您正在将控件筛选到TextBox的here
if(ct.GetType().ToString()==“System.Web.UI.WebControls.TextBox”)
。另外,使用ct.GetType()==typeof(TextBox)
,它更正确,我想我在查找hiddenfield控件时遇到了问题。我试过这个,现在似乎可以用了。“string TextHidden=((System.Web.UI.WebControls.HiddenField)ctr.FindControl(“hd_”+deger.Substring(4))).Value;”这也是搜索它的另一种方式!通常,当我做动态工作时,我会以很多控件结束,因此我避免使用FindControl,因为它会遍历整个控件列表。我只是为控件创建列表,我需要在创建控件时搜索并添加它们,然后我只需要迭代列表。
foreach (Control c in plc.Controls)
{
System.Web.UI.HtmlControls.HtmlTable Survey_Inner = (System.Web.UI.HtmlControls.HtmlTable)c.FindControl("Survey_Inner");
foreach (System.Web.UI.HtmlControls.HtmlTableRow r in Survey_Inner.Rows)
{
foreach (Control ctr in r.Cells)
{
foreach (Control ct in ctr.Controls)
{
if (ct.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
{
string freeTxtQues = ?? ;
string TextCevap = ((System.Web.UI.WebControls.TextBox)ct).Text;
string deger = ct.ID.ToString();
Guid QuestionId = new Guid(deger.Substring(4));
SaveAnswers(this._PortalUserHelper.UserProxy.ContactId, EgitimKatilimcisi, QuestionId, TextCevap, freeTxtQues);
}
string freeTxtQues = ((System.Web.UI.WebControls.HiddenField)ct).Value;