0

ASP Repeater コントロールを試しています。

ここで、3 つのラベル (リピーター内) を使用してデータベースの値を表示しています。

また、ボタンのクリックイベントで1つのラベルの値を取得できます(これもリピーター内にあります)

しかし、

同じボタンのクリックで 3 つのラベルすべての値を取得したい

私のaspxファイルは次のとおりです。

<asp:Repeater ID="rptrHotel" runat="server" 
                                onitemcommand="rptrHotel_ItemCommand">
                                <HeaderTemplate>
                                    <table width="500px"  class="bidTab">
                                        <tr class="bidHeading">
                                            <th>
                                                Hotel Name
                                            </th>
                                            <th>
                                                Room Type
                                            </th>
                                            <th>
                                                Bid
                                            </th>
                                        </tr>
                                </HeaderTemplate>
                                <ItemTemplate>
                                    <tr>
                                        <td>
                                            <asp:Label ID="lblHotelName" runat="server" Text='<%#Eval("hotel_name")%>'></asp:Label>
                                        </td>
                                        <td>
                                            <asp:Label ID="lblRoomType" runat="server" Text='<%#Eval("room_type_name")%>'></asp:Label>
                                        </td>
                                        <td>
                                            <asp:Label ID="lblBaseBidAmt" runat="server" Text='<%#Eval("base_bid_ammount")%>'></asp:Label>
                                        </td>
                                        <td>
                                            <asp:Button ID="btnBidNow" runat="server" Text="Bid Now" CommandName="BidNow" CommandArgument='<%#Eval("hotel_name") %>'/>
                                        </td>
                                    </tr>
                                </ItemTemplate>
                                <FooterTemplate>
                                    </table>
                                </FooterTemplate>
                            </asp:Repeater>

aspx.csファイルで試したコードは次のとおりです。

protected void rptrHotel_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        if (e.CommandName == "BidNow")
        {
            Label hotel_name = e.Item.FindControl("lblHotelName") as Label;
            hotel_name.Text = e.CommandArgument.ToString();

            Label room_type_name = e.Item.FindControl("lblRoomType") as Label;
            room_type_name.Text = e.CommandArgument.ToString();

            Label base_bid_ammount = e.Item.FindControl("lblBaseBidAmt") as Label;
            base_bid_ammount.Text = e.CommandArgument.ToString();

            lblhotelresult.Text = lblhotelresult.Text;
            lblRoomResult.Text = room_type_name.Text;
            lblBaseamtresult.Text = base_bid_ammount.Text;

            //Session["hotel_name"] = hotel_name.Text;
            //Session["room_type_name"] = room_type_name.Text;
            //Session["base_bid_ammount"] = base_bid_ammount.Text;

            //Response.Redirect("BidRoomCustomer.aspx");
        }
    }

何ができるかを提案し、3 つのラベルすべてにアクセスするのを手伝ってください。

4

1 に答える 1

1

自分でやった。

複数の引数を処理する必要があります。

.aspx ファイルを次のように変更しました。

<asp:Repeater ID="rptrHotel" runat="server" OnItemCommand="rptrHotel_ItemCommand">
                                <HeaderTemplate>
                                    <table width="500px" class="bidTab">
                                        <tr class="bidHeading">
                                            <th>
                                                Hotel Name
                                            </th>
                                            <th>
                                                Room Type
                                            </th>
                                            <th>
                                                Bid
                                            </th>
                                        </tr>
                                </HeaderTemplate>
                                <ItemTemplate>
                                    <tr>
                                        <td>
                                            <asp:Label ID="lblHotelName" runat="server" Text='<%#Eval("hotel_name")%>'></asp:Label>
                                        </td>
                                        <td>
                                            <asp:Label ID="lblRoomType" runat="server" Text='<%#Eval("room_type_name")%>'></asp:Label>
                                        </td>
                                        <td>
                                            <asp:Label ID="lblBaseBidAmt" runat="server" Text='<%#Eval("base_bid_ammount")%>'></asp:Label>
                                        </td>
                                        <td>
                                            <asp:Button ID="btnBidNow" runat="server" Text="Bid Now" CommandName="BidNow" CommandArgument='<%#Eval("hotel_name")+","+ Eval("room_type_name")+","+Eval("base_bid_ammount")%>'>
                                            </asp:Button>

                                        </td>
                                    </tr>
                                </ItemTemplate>
                                <FooterTemplate>
                                    </table>
                                </FooterTemplate>
                            </asp:Repeater>

私の .aspx.cs ファイルは次のとおりです。

protected void rptrHotel_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        if (e.CommandName == "BidNow" )
        {

            string[] arguments = e.CommandArgument.ToString().Split(new char[] { ',' });
            string hotel_name = arguments[0];
            string hotel_room_type = arguments[1];
            string base_bid_amt=arguments[2];

        }

これはうまくいきます:)

于 2013-04-03T13:13:19.717 に答える