ドロップダウンメニューがあります。私の目標は、現在ログインしている人がリストの最初にあり、その後にアルファベット順のリストが続く場所にすることです。
<asp:DropDownList ID="userNameDropDown" runat="server" DataSourceID="SqlDataSource1"
DataTextField="Name" DataValueField="PK_User" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="true">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
SelectCommand="SELECT [PK_User], [Name] FROM [User] ORDER BY CASE WHEN [LoginName] = '@userLoggedIn' THEN 1 ELSE 2 END, [Name]">
<SelectParameters>
<asp:QueryStringParameter Name="userLoggedIn" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
パラメータを設定する必要がある私のC#は次のとおりです。
protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource1.SelectParameters["userLoggedIn"].DefaultValue = User.Identity.Name;
}
その結果、ログインしているユーザーを無視して、リストがアルファベット順に表示されます。SelectCommand を変更してハードコードすると、正常に動作します。
SelectCommand="SELECT [PK_User], [Name] FROM [User] ORDER BY CASE WHEN [LoginName] = 'tunnelld' THEN 1 ELSE 2 END, [Name]
この場合、それは私が望むことを正確に行います。
System.Diagnostics.Debug.Write(User.Identity.Name);
次の出力が得られます: tunnelld