2013-01-23 50 views
0

我有一個Repeater將發佈用戶名,其權限級別和刪除按鈕。 權限級別假設位於下拉列表中。假設默認值是用戶當前擁有的。通過DropDownList ASP和C的動態選擇#

IE

用戶,客戶

用戶B組成員

用戶C組管理員

改變這些最終將觸發一個SQL命令來更改它們在數據庫中。但這不是問題,我知道該怎麼做。

這些值來自中繼器源。

ASP代碼:

<asp:SqlDataSource ID="User_Repeater_Source" runat="server" ConnectionString="<%$ ConnectionStrings:app_migrationConnectionString %>" 
    SelectCommand="SELECT Membership.*, Users.Email, Users.Last_Name + ', ' + Users.First_Name + ' (' + Membership.User_ID + ')' as User_String FROM Membership INNER JOIN Users ON Users.User_ID = Membership.User_ID INNER JOIN Permission_Levels ON Permission_Levels.PID = Membership.PID WHERE GID = @GID"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="Group" DefaultValue="-1" Name="GID" PropertyName="SelectedValue" 
     Type="String" /> 
    </SelectParameters> 
    </asp:SqlDataSource> 
    <asp:SqlDataSource ID="User_PL_Source" runat="server" ConnectionString="<%$ ConnectionStrings:app_migrationConnectionString %>" 
    SelectCommand="SELECT * FROM Permission_Levels"></asp:SqlDataSource> 

...

<td> 
    <div class="e_Title"> 
     Edit Group Permission:</div> 
    <br /> 
    <asp:Repeater ID="User_Repeater" runat="server" DataSourceID="User_Repeater_Source"> 
     <HeaderTemplate> 
     <table class="e_Repeater"> 
      <tr> 
      <th> 
       User: 
      </th> 
      <th> 
       Permission Level: 
      </th> 
      <th> 
       Remove User: 
      </th> 
      </tr> 
     </HeaderTemplate> 
     <ItemTemplate> 
     <tr> 
      <td> 
      <a href='<%#"mailto:" + DataBinder.Eval(Container.DataItem, "Email") %>'> 
       <%#DataBinder.Eval(Container.DataItem, "User_String" %></a> 
      </td> 
      <td> 
      <asp:DropDownList ID="User_PL" runat="server" DataSourceID="User_PL_Source" DataTextField="Name" 
       DataValueField="PID" AutoPostBack="true"> 
      </asp:DropDownList> 
      </td> 
      <td> 
      <asp:Button ID="Submit_User_Remove" runat="server" Text="Remove Permission" OnCommand="Remove_User_Permission" 
       CommandArgument='<%# Eval("AID")%>' /> 
      </td> 
     </tr> 
     </ItemTemplate> 
     <FooterTemplate> 
     </table> 
     </FooterTemplate> 
    </asp:Repeater> 
    </td> 

我期待的PID傳遞到下拉列表並做出選擇的選擇

回答

0

首先,我相信你這樣做不打算標籤這個asp-classic,而是asp.net。沒有什麼大不了的。

我會推薦使用OnItemDataBound。像這樣的東西,讓你開始:

protected void User_Repeater_OnItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    RepeaterItem item = (RepeaterItem)e.Item; 
    if (item.ItemType == ListItemType.AlternatingItem || item.ItemType == ListItemType.Item) 
    { 
     DropDownList User_PL = (DropDownList)item.FindControl("User_PL"); 
     ... Set your value here -- consider adding a hidden element with the value you're trying to set it to and get the value the same was as we got the DropDownList 
    } 
} 

另外,我相信你可以使用標記綁定控件本身:

SelectedValue='<%# Eval("PID") %>' 

好運。

+0

這項工作? 如果我使用OnSelectedIndexChanged,不會改變下拉菜單運行IndexChange命令? –

+0

我的建議是嘗試一下嗎?或者,我相信你可以在標記中綁定到控件本身 - 請參閱編輯 - 我只是喜歡OnItemDataBound爲您提供的靈活性。祝你好運。 – sgeddes

+0

這似乎是工作,因爲我的網頁不刷新不停 好雅 –