如何在我的datalist中找到控件?
即使我使用FindControl
,它也不起作用。
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView drv = (DataRowView)(e.Item.DataItem);
Label ResponseCatIDLabel = (Label)e.Item.FindControl("ResponseCatIDLabel");
string res = ResponseCatIDLabel.Text;
TextBox TextBox1 = (TextBox)e.Item.FindControl("TextBox1");
string text = TextBox1.Text;
Label MCQ_TYPELabel = (Label)e.Item.FindControl("MCQ_TYPELabel");
string mcq = MCQ_TYPELabel.Text;
RadioButtonList ExcellentRb = (RadioButtonList)e.Item.FindControl("ExcellentRb");
string excellent = ExcellentRb.Text;
RadioButtonList YesNoRb = (RadioButtonList)e.Item.FindControl("YesNoRb");
string yesno = YesNoRb.Text;
Label RespnseCatIDLabel = (Label)e.Item.FindControl("RespnseCatIDLabel");
string sqn = RespnseCatIDLabel.Text;
if (RespnseCatIDLabel.Text == "")
{
ExcellentRb.Visible = false;
YesNoRb.Visible = false;
}
这是我设计代码的代码,有什么不对吗?
<asp:DataList ID="DataList1" runat="server" BackColor="White"
BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3"
DataSourceID="SqlDataSource1" Font-Bold="False"
Font-Italic="False" Font-Names="Britannic Bold" Font-Overline="False"
Font-Strikeout="False" Font-Underline="False" GridLines="Vertical"
OnItemDataBound="DataList1ItemDataBound">
<AlternatingItemStyle BackColor="Gainsboro" />
<FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
<HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
<ItemStyle BackColor="#EEEEEE" ForeColor="Black" />
<ItemTemplate>
QuestionNo: <asp:Label ID="SurveyQuestionNoLabel" runat="server"
Text='<%# Eval("SurveyQuestionNo") %>' />
<br />
<asp:Label ID="PoolQuestionLabel" runat="server"
Text='<%# Eval("PoolQuestion") %>' />
<br />
MCQ_TYPE:
<asp:Label ID="MCQ_TYPELabel" runat="server" Text='<%# Eval("MCQ_TYPE") %>' />
<br />
ResponseCatID:
<asp:Label ID="RespnseCatIDLabel" runat="server"
Text='<%# Eval("ResponseCatID") %>' /><br />
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"></asp:TextBox>
<br />
<asp:RadioButtonList ID="YesNoRb" runat="server" DataSourceID="YesNoDB"
DataTextField="Response" DataValueField="ResponseValue">
</asp:RadioButtonList>
<asp:SqlDataSource ID="YesNoDB" runat="server"
ConnectionString="<%$ ConnectionStrings:SurveyFdDBConnString %>"
SelectCommand="SELECT Response, ResponseValue FROM MCQ_Response_Options WHERE (Response = 'Yes') OR (Response = 'No') ORDER BY ResponseValue DESC">
</asp:SqlDataSource>
<asp:RadioButtonList ID="ExcellentRb" runat="server" DataSourceID="ExcellentDB"
DataTextField="Response" DataValueField="ResponseValue">
</asp:RadioButtonList>
<asp:SqlDataSource ID="ExcellentDB" runat="server"
ConnectionString="<%$ ConnectionStrings:SurveyFdDBConnString %>"
SelectCommand="SELECT ResponseCatID, Response, ResponseValue FROM MCQ_Response_Options WHERE (Response = 'Excellent') AND (ResponseValue = 5) AND (ResponseCatID = 'R1') OR (Response = 'Good') AND (ResponseValue = 4) AND (ResponseCatID = 'R1') OR (Response = 'Satisfactory') AND (ResponseValue = 3) AND (ResponseCatID = 'R1') OR (Response = 'Marginal') AND (ResponseValue = 2) AND (ResponseCatID = 'R1') OR (Response = 'Poor') AND (ResponseValue = 1) AND (ResponseCatID = 'R1') ORDER BY ResponseValue DESC">
</asp:SqlDataSource>
<br />
</ItemTemplate>
<SelectedItemStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
</asp:DataList>
答案 0 :(得分:2)
您将ItemDatabound绑定到错误的方法。在标记中你有:
OnItemDataBound="DataList1ItemDataBound"
将其更改为:
OnItemDataBound="DataList1_ItemDataBound"
因为具有访问控件的代码的方法是:
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
答案 1 :(得分:0)
你可能需要这样的东西:
Label MCQ_TYPELabel1 = DataList1.Items[1].FindControl("MCQ_TYPELabel") as Label;
答案 2 :(得分:0)
这是在我的最后工作
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
Label Label1 = e.Item.FindControl("Label1") as Label;
}
答案 3 :(得分:0)
首先,您需要绑定数据列表然后循环它
foreach ( DataListItem li in DataList1.Items )
{
TextBox txt= (TextBox) li.FindControl("TextBox1");
}