0

DBには2つのテーブル(Polls、PollItems)があります。select poll に次のコードを使用します。

var lstPoll = (from P in Conn.Polls.ToList()
                            orderby P.PollOrder
                            select new { P.Question, P.PollID, P.PollItems }).ToList();

RepeaterPoll.DataSource = lstPoll.ToList();
RepeaterPoll.DataBind();

PollItems テーブル (P.PollItems) には、 PollItemIDPollAnswerパラメータがあります。

<asp:Repeater ID="RepeaterPoll" runat="server">
    <ItemTemplate>
    <%# Eval("Question")%>
    <br />
    <asp:RadioButtonList ID="rblItemPoll" runat="server" DataValueField='<%# Eval("PollItemID")%>' DataTextField='<%# Eval("PollAnswer")%>'></asp:RadioButtonList>
    <br /><br />
    </ItemTemplate>
    </asp:Repeater>

ただし、PollAnswer と PollItemID を rblItemPoll に評価することはできません。

投票システムを構築するために私を助けてください。

4

1 に答える 1

2

これを試して:

1 -コントロールをRepeater使用して定義し、イベント ハンドラーを指定します。RadioButtonListOnItemDataBound

<asp:Repeater ID="RepeaterPoll" runat="server" OnItemDataBound="RepeaterPoll_OnItemDataBound">
    <ItemTemplate>
        <%# Eval("Question")%>
        <br />
        <asp:RadioButtonList ID="rblItemPoll" runat="server" />
        <br /><br />
    </ItemTemplate>
</asp:Repeater>

2-イベントで DataBinding のロジックを実装しますRadioButtonListOnItemDataBound

protected void RepeaterPoll_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        dynamic item = e.Item.DataItem;
        RadioButtonList list = (RadioButtonList)e.Item.FindControl("rblItemPoll");
        list.DataValueField = "PollItemId";
        list.DataTextField = "PollItemDescription";
        list.DataSource = item.PollItems;
        list.DataBind();
    }
}

タグ thoでDataValueFieldとプロパティの両方をDataTextField直接定義できます。RadioButtonList

さらに、 LINQ クエリ結果の匿名型を作成しているため、 DataItemas を取得しました。dynamic

于 2013-03-05T21:11:29.010 に答える