0

ユーザー名、権限レベル、および削除ボタンを投稿するリピーターがあります。アクセス許可レベルは、ドロップダウン リストにあると想定されています。デフォルト値は、ユーザーが現在持っているものと想定されます。

IE

ユーザー A、ゲスト

ユーザー 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をドロップダウンリストに渡し、それを選択したものにしようとしています

4

1 に答える 1

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") %>'

幸運を。

于 2013-01-23T15:53:15.243 に答える