0

したがって、ユーザーがdropDownListから値を選択してボタンをクリックすると、IDはコードビハインド(私が望む場所)に渡されます。

<asp:DropDownList ID="DropDownList" runat="server" AppendDataBoundItems="true" DataTextField="Company_Name" DataValueField="id">
<asp:ListItem Text="---Select---" Value="0" />   
</asp:DropDownList>

したがって、dataValueFieldは、DDで選択されたレコードの「id」を渡します。

ただし、同じページで、ドロップダウンから以前に選択したレコードを表示するためにリピーターを使用しています。各レコードの横に、クリックしたときにタスクを実行する[価格の変更]ボタンがあります。すべて正常に機能しますが、すべて必要性は同じ「id」です。それで、これは同様の方法で行われますか?例えば

<asp:Repeater ID="repeaterShowName" runat="server">             
                <HeaderTemplate>                   
                        <tr>

                            <th>
                                <asp:Label ID="SubConName" Text="Current SubContractors" runat="server"></asp:Label>                               
                            </th>
                        </tr>                   
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                        <td>
                            <asp:Label ID="SubCon" Text='<%# Bind ("Company_Name")  %>' runat="server"></asp:Label>  
                        </td> 
                        <td>                                     
                            <asp:LinkButton ID="AddNewBOQLink" runat="server"  OnClick="EditPricesForSubContractor" CssClass="bottomhyperlink">Change Prices</asp:LinkButton>
                        </td>

                    </tr>
                </ItemTemplate>
            </asp:Repeater>

//リンクボタン内にDataValueField="id"を追加しますか?ユーザーが名前の横にあるハイパーリンクを選択すると、自動的に'idが表示されますか?

4

1 に答える 1

2

LinkBut​​tonのプロパティを使用してCommandArgument、クリックを処理するメソッドにIDを渡す必要があります。

したがって、次のLinkButtonようになります。

<asp:LinkButton ID="AddNewBOQLink" runat="server" CommandArgument='<%# Bind("id")%>'  CssClass="bottomhyperlink">Change Prices</asp:LinkButton>

そして、リピーターに次のプロパティを追加します。

<asp:Repeater .... OnItemCommand="repeater_Command" ...

コマンドイベントを処理するメソッドは次のようになります

void repeater_Command(Object Sender, RepeaterCommandEventArgs e) {        
   //retrieve the id like so
   int id = (int)e.CommandArgument;
}

OnClickまた、 LinkBut​​tonからプロパティを削除したことにも注意してください。OnItemCommandリピーターの方法でクリックを処理しているので、必要ありません。

さらに、CommandNameLinkBut​​tonにプロパティを追加することを検討することをお勧めします。これは、実行するコマンドを識別するために使用されます。現在、コマンドは1つだけです。価格を変更します。ただし、将来的には、別のコマンドでボタンを追加することもできます。

これを行うには、LinkBut​​tonに次のプロパティを追加します。

<asp:LinkButton ... CommandName="ChangePrice" ...

そして、repeater_Commandを処理するようにメソッドを変更しCommandNameます。そのようです:

void repeater_Command(Object Sender, RepeaterCommandEventArgs e) {    
   switch(e.CommandName)
   {
      case "ChangePrice":    
         //retrieve the id like so
         int id = (int)e.CommandArgument;
         break;
   }
}
于 2013-02-06T16:15:35.317 に答える