سؤال

على صفحتي لدي DropDownList التي ملء مع قيم قاعدة البيانات من SqlDataSource (انظر الكود أدناه).

كيف يمكنني إضافة النص الخاص بي أو سطر فارغ قبل القيم؟

<asp:DropDownList ID="drpClient" runat="server" Width="200px" 
    AutoPostBack="True" DataSourceID="dsClients" DataTextField="name" 
        DataValueField="client_id">
</asp:DropDownList>
<asp:SqlDataSource ID="dsClients" runat="server" 
    ConnectionString="my_connection_string" 
    ProviderName="System.Data.SqlClient" 
    SelectCommand="SELECT [client_id], [name] FROM [clients]">
</asp:SqlDataSource>

شكرًا.

ملاحظة هل تنصح باستخدام SqlDataSource أم أنه من الأفضل أن تملأ طريقة أخرى؟

هل كانت مفيدة؟

المحلول

يمكنك ببساطة إضافة قائمة الاغراض داخل ترميز القائمة المنسدلة. سيتم إلحاق جميع القيم من DataSource بعد ذلك.

<asp:DropDownList ID="drpClient" runat="server" Width="200px" 
          AutoPostBack="True" DataSourceID="dsClients" DataTextField="name" 
          DataValueField="client_id" AppendDataBoundItems="true">
   <asp:ListItem>-- pick one --</asp:ListItem>
</asp:DropDownList>

نصائح أخرى

<asp:DropDownList ID="drpClient" runat="server" Width="200px" 
        AutoPostBack="True" DataSourceID="dsClients" DataTextField="name" 
        DataValueField="client_id" AppendDataBoundItems="True">

    <asp:ListItem Text="" Value="" />
 </asp:DropDownList>

من السهل أن تفوت، لذلك لا تنسى AppendDataBoundItems سمة أضيفت.

لم أختبر ذلك حقا، لكنني أفترض أنه يمكنك إضافة عنصر بعد أن قمت بتدوين القائمة المنسدلة. يمكنك إضافة هذا الحدث إلى أي قائمة منسدلة ترغب في إضافة هذا المربع الفارغ إليه.

protected void DropDownList_DataBound(object sender, EventArgs e)
    {
        DropDownList ddl = (DropDownList)sender;
        ListItem emptyItem = new ListItem("", "");
        ddl.Items.Insert(0, emptyItem);
    }

أحل تغيير الأمر SELECT إضافة خيار فارغ:

        <asp:SqlDataSource ID="dsClients" runat="server" 
            ConnectionString="my_connection_string" 
            ProviderName="System.Data.SqlClient" 
            SelectCommand="SELECT [client_id], [name] FROM [clients] union SELECT NULL, '--- pick one ----' ">
        </asp:SqlDataSource>

تحية طيبة!!!

في تطبيق على غرار الحلاقة في وجهي، يبدو هذا:

@Html.EnumDropDownListFor(
    model => model.Privilege.Role,
    "-- Select role --",
    new
    {
        @style = "width: 216px !important",
        @class = "form-control",
        id = "role",
        required = "required"
     })

وفي JavaScript التي يتم تنفيذها على الحمل لدي هذا:

function PutDefaultPrivilegePanelListHints() {
    $('#role').val('');
    ...
}

هناك أيضا حدولي أكثر مرونة عبر التحقق من صحة غير مزعجة (وليس للعناية على HTML5):

$('.required').each(function () { $(this).rules('add', { required: true, messages: { required: '' } }) });

بالطبع، هناك فحص جانب الخادم أيضا. لا أعتقد أنها فكرة جيدة للتعامل مع الفصول الدراسية. على سبيل المثال، كل شيء أظهره في الصفحة هو بعض الفئة. تحتوي هذه الفئة على العديد من الخصائص ذات النوع المعدد. سيكون من كابوسا لتكرار جميع هذه الخصائص، ولكن جعلها نلاوة في بعض الطبقة الإضافية كما اقترح بعضها هنا على Stackoverflow.

بعد كل شيء، لماذا يجب أن أغير منطق عملي من أجل بعض العلامات المحددة؟ بدلا من ذلك، أتعامل مع كل شيء عبر JavaScript وبعض الشيكات النموذجية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top