1

現在のところ、テーブルからの情報をすでに入力したddlがあります。自動ポストバックに設定されている顧客のリストです。私が直面している問題は、デフォルトの選択が常にリストの最初の顧客であり、1人の顧客をクリックすると、ポストバックして必要なすべての情報を取得し、選択を最初の顧客に設定して実行するという事実です。ポストバックしないでください。

したがって、私が考えて達成しようとしている修正は、「顧客を選択してください」のようなnull値をddlに入れることです。DDLの編集項目に移動してこれを追加しましたが、それが含まれていないテーブル。それを含める方法はありますか?

Mozilla Firefoxでは、ポストバック後も同じ顧客にとどまるため、この問題は発生しません。何かを片付けることができれば、最善を尽くします。役立つ可能性のあるコードがあれば、それを提供できます。

//save the value of the current selection to reselect later if still exists
string origSelectedItem = ddlSelectedCustomer.SelectedValue;

//clear and refill the list
ddlSelectedCustomer.Items.Clear();

//check what role the user is in
string usersRole = Roles.GetRolesForUser(Membership.GetUser().UserName)[0];

MembershipUser user = Membership.GetUser();

switch (usersRole)
{
    case "SalesRep":
         ddlSelectedCustomer.DataSource = 
         DAL.Util.getSalesRepCustomers((Guid)user.ProviderUserKey);
         ddlSelectedCustomer.DataBind();
         break;

    case "BasicUser":
    case "Customer":
         ddlSelectedCustomer.DataSource = 
         DAL.Util.getCustomersListForUser((Guid)user.ProviderUserKey);
         ddlSelectedCustomer.DataBind();
         break;

    case "Admin":
    case "SuperAdmin":
         ddlSelectedCustomer.DataSource = DAL.Util.getAllCustomersList(); 
         ddlSelectedCustomer.DataBind();
         break;
    default:
         break;
}

//if user had a company selected, reselect it if it exists
if (origSelectedItem != string.Empty)
    ddlSelectedCustomer.SelectedValue = origSelectedItem;
else if (ddlSelectedCustomer.Items.Count == 1)    
    //if only one item in the list, select it
    ddlSelectedCustomer.Items[0].Selected = true;

また、これはサイトのマスターページのコードビハインドにあります。

ありがとうございました

4

2 に答える 2

3

trueに設定する必要がありAppendDataBoundItems、空の最初の項目を追加できます。

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true">
    <asp:ListItem Text="" Value="" /> <!-- empty first item -->    
</asp:DropDownList>

リストを複数回バインドする場合は、重複する項目が追加されないようにリストをクリアする必要があることに注意してください。

コード ビハインドに空のアイテムを追加する場合は、リストをクリアした後、次のように実行できます。

DropDownList1.Items.Clear();
DropDownList1.Items.Add(new ListItem(string.Empty, string.Empty));

//bind list
于 2012-05-09T20:35:40.183 に答える
1

私はこの質問がすでにあることを知っていますが、aspxに触れずにコードビハインドだけに追加する別の方法もあります:変数を使用:

ddlSelectedCustomer.Items.Insert(0, new ListItem("Please Select"));

これにより、ddl の最初の項目として「選択してください」が追加されます

于 2012-05-29T19:17:16.480 に答える