2
空我已經在ASP.NET數據網格以下代碼:佔位符控制集合在回發
<asp:TemplateField HeaderText="" Visible="True" >
<ItemTemplate>
<%--<asp:TextBox ID="txtAnswer" Text='<%# Bind("Answer") %>' runat="server"
TextMode="MultiLine" Height="76px" MaxLength="2000" Width="377px" >
</asp:TextBox>--%>
<asp:HiddenField ID="hfQuestionID" Value='<%# Bind("QuestionID") %>' runat="server" />
<asp:HiddenField ID="hfAnswerID" Value='<%# Bind("AnswerID") %>' runat="server" />
<asp:HiddenField ID="hfAnswer" Value='<%# Bind("Answer") %>' runat="server" />
<asp:PlaceHolder ID="ph1" runat="server" />
<%--<%# GetAnswerControl(DataBinder.Eval(Container.DataItem,"QuestionID").ToString(),
DataBinder.Eval(Container.DataItem,"Answer").ToString()) %>--%>
</ItemTemplate>
<EditItemTemplate>
<asp:HiddenField ID="hfQuestionID" Value='<%# Bind("QuestionID") %>' runat="server" />
<asp:HiddenField ID="hfAnswerID" Value='<%# Bind("AnswerID") %>' runat="server" />
<asp:HiddenField ID="hfAnswer" Value='<%# Bind("Answer") %>' runat="server" />
<asp:PlaceHolder ID="ph1" runat="server" />
<%--<asp:TextBox ID="txtAnswer" Text='<%# Bind("Answer") %>' runat="server"
TextMode="MultiLine" Height="76px" MaxLength="2000" Width="377px" ></asp:TextBox>--%>
</EditItemTemplate>
</asp:TemplateField>
佔位符被動態填充具有取決於答案的類型或者一個文本框或下拉列表,用戶需要給。呈現初始答案字段(文本框或下拉列表)的代碼正常工作。
但是,當我觸發我的按鈕單擊事件時,佔位符的控件屬性始終爲空。這是爲什麼發生?我一直在困擾着我的大腦幾天,這對我來說沒有任何意義。
我試圖訪問數據網格的動態添加控件的代碼片段如下...我做錯了什麼?
foreach (GridViewRow r in gridUserSupplierTypeQuestionsAndAnswers.Rows)
//if (IsRowModified(r))
//{
// gridUserSupplierTypeQuestionsAndAnswers.UpdateRow(r.RowIndex, false);
//}
{
PlaceHolder ph =(PlaceHolder) r.FindControl("ph1");
Control c = ph.FindControl("Answer");
string answer = string.Empty;
if(c.GetType() == typeof(TextBox))
{
TextBox tb = (TextBox) c;
answer = tb.Text;
}
else if (c.GetType() == typeof(DropDownList))
{
DropDownList dl = (DropDownList)c;
answer = dl.SelectedValue;
}
動態創建的控件必須創建每一個後回...做一次是不夠的。這是假設你正在做的! – freefaller
僅供參考:http://forums.asp.net/t/1098870.aspx/1 –
@JasonEvans,你們不應該在回答中發佈這個問題嗎?我認爲這將有助於未來找到這個問題的人。 – jmrnet