PDA

View Full Version : RequireFieldvalidationبرای DropDownList



salmah
دوشنبه 25 فروردین 1393, 12:21 عصر
چه طور میشه برای DropDownListاز RequireFieldvalidation استفاده کرد.
من RequireFieldvalidation رادرگ کردم ولی اگر از dropdownهیچ آیتمی انتخاب نشه ارور نمی گیره چون خودش به طور پیش فرض اولین آیتم را انتخاب کرده .:اشتباه:
من میخوام کاربر حتی اولین آیتم را هم انتخاب کنه

mRizvandi
دوشنبه 25 فروردین 1393, 14:04 عصر
اصرارتون برای اینکه کاربر حتما اولین مورد رو انتخاب کنه برای چی هست؟

معمولا در همچین شرایطی یک گزینه : "انتخاب کنید" یا همچین چیزی رو به عنوان اولین آیتم داخل DropDown قرار میدن تا کاربر یکی از اون موارد رو انتخاب کنه.
حالا می تونید با استفاده از RequiredFieldValidator کنترل رو بررسی کنید. البته در این حالت باید مقدار خصوصیت InitialValue مربوط به کنترل اعتبار سنجی رو با مقدار پیش فرض اولین آیتمی که در DropDown تعریف کردید مقداردهی کنید. مثلا همون کلمات "انتخاب کنید".
اینم یک مثال:


<div>
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True">
<asp:ListItem>--Select--</asp:ListItem>
<asp:ListItem>First Item</asp:ListItem>
<asp:ListItem>Second Item</asp:ListItem>
<asp:ListItem>Third Item</asp:ListItem>
</asp:DropDownList>

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"ControlToValidate="DropDownList1"
ErrorMessage="Value Required!" InitialValue="--Select--"></asp:RequiredFieldValidator>
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>

salmah
دوشنبه 25 فروردین 1393, 14:59 عصر
اصرارتون برای اینکه کاربر حتما اولین مورد رو انتخاب کنه برای چی هست؟

</[/CODE]
ببینیدمنظورم اینه که کاربر حتما یکی از ایتمهای dropdown را انتخاب کرده باشه حتی اگه اولین آیتم را بخواهد یه بار روش کلیک کنه....

من گرید را به یه جدول بایند کردم. واولین رکورد جدول را نشون میده وفک کنم نشه براشInitialValue تعریف کرد.

mRizvandi
دوشنبه 25 فروردین 1393, 15:28 عصر
البته initialvalue دقیقا جواب سوال شماست، چون جلوی پست بک رو میگیره و کاربر حتما باید یکی از آیتمهای dropdownlist رو انتخاب کنه.

یا سناریتون رو عوض کنید. وقتی صفحه باز میشه، شما خودتون بایند رو انجام بدید، انگار که کاربر اولین گزینه رو انتخاب کرده.
بعد از اون هر گزینه ای رو که انتخاب کنه شما دوباره بایند رو انجام می دید.

salmah
سه شنبه 26 فروردین 1393, 09:45 صبح
البته initialvalue دقیقا جواب سوال شماست، چون جلوی پست بک رو میگیره و کاربر حتما باید یکی از آیتمهای dropdownlist رو انتخاب کنه.

یا سناریتون رو عوض کنید. وقتی صفحه باز میشه، شما خودتون بایند رو انجام بدید، انگار که کاربر اولین گزینه رو انتخاب کرده.
بعد از اون هر گزینه ای رو که انتخاب کنه شما دوباره بایند رو انجام می دید.
ببینید این کدی هست که من استفاده کردم
الان یعنی باید چه تغییری بدم:


<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="SqlDataSource1" DataTextField="nam" DataValueField="oid">
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="DropDownList1" ErrorMessage="*نام دوره را انتخاب کنید"
ForeColor="#0066CC"></asp:RequiredFieldValidator>

mRizvandi
سه شنبه 26 فروردین 1393, 12:46 عصر
خب چون شما DropDown رو دارید بایند می کنید پس بعد از بایند شدن باید یک ردیف به اون اضافه کنید، مثلا با این عنوان "یک دوره را انتخاب کنید"
سپس کنترل اعتبارسنجی رو هم تنظیم کنید.

ابتدا رویداد DataBound رو به کنترل DropDown اضافه کنید و سپس کد زیر رو هم اضافه کنید


protected void DropDownList1_DataBound(object sender, EventArgs e)
{
DropDownList1.Items.Insert(0, new ListItem("یک دوره را انتخاب کنید", "0"));
}


حالا کنترل اعتبار سنجی رو هم تغییر بدید:


<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="DropDownList1"
ErrorMessage="*نام دوره را انتخاب کنید"
InitialValue="یک دوره را انتخاب کنید"
ForeColor="#0066CC" />


دقت کنید که آیتمی که در کد اضافه شده با مقدار InitialValue باید یکسان باشه.
موفق باشید

salmah
چهارشنبه 27 فروردین 1393, 01:39 صبح
با تشکر مواردی را که گفتید انجام دادم ولی validatorکار نمی کنه نمی دونم کجا را اشتباه کار کردم


<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True"
DataSourceID="SqlDataSource1" DataTextField="nam" DataValueField="oid" >
</asp:DropDownList>

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="DropDownList1"
ErrorMessage="*نام دوره را انتخاب کنید"
InitialValue="یک دوره را انتخاب کنید"
ForeColor="#0066CC" />
</asp:RequiredFieldValidator>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="ثبت" />

و


protected void DropDownList1_DataBound(object sender, EventArgs e)
{
DropDownList1.Items.Insert(0, new ListItem("یک دوره را انتخاب کنید", "0"));
}

protected void Button1_Click(object sender, EventArgs e)
{

SqlDataSource2.Insert();
//Label1.Text = "ثبت اطلاعات";
}


بایدprotected void DropDownList1_DataBound(object sender, EventArgs e را بعداز کدلود بنویسم

mRizvandi
چهارشنبه 27 فروردین 1393, 03:04 صبح
دوست عزیز رویداد DataBound به DropDown داده نشده، احتمالا اگر برنامه رو اجرا کنید اون گزینه "یک دوره را انتخاب کنید" اضافه نشده
به جای اون تعریفی که الان دارید این رو جایگزین کنید:


<asp:DropDownList ID="DropDownList1" runat="server" OnDataBound="DropDownList1_DataBound" DataSourceID="SqlDataSource1" DataTextField="nam" DataValueField="oid"></asp:DropDownList>

این رو هم حذف کنید:
</asp:RequiredFieldValidator>

بعد از اجرا مطمن بشین که گزینه مورد نظر به لیست اضافه شده باشه.

salmah
چهارشنبه 27 فروردین 1393, 11:18 صبح
بابت راهنمایی هاتون واقعا ممنون.................
این کد را هم اضافه کردم و گزینه "یک دوره را انتخاب کنید" هم اضافه شد ولی validationکار نمی کنه یعنی اگر کاربر گزینه ای انتخاب نکنه اشکال نمی گیره

mRizvandi
چهارشنبه 27 فروردین 1393, 14:05 عصر
حتما از کپی پیست استفاده کنید و همون جمله رو از توی کد توی ولیدتور کپی کنید شاید با حروف ی و ک مساله دارید! یا اینکه یکی رو کل رشته رو پاک کنید و هر دو رو دوباره تایپ کنید. (خود " رو هم پاک کنید و دوباره تایپ کنید)

vajihe11
چهارشنبه 27 فروردین 1393, 23:01 عصر
حتما از کپی پیست استفاده کنید و همون جمله رو از توی کد توی ولیدتور کپی کنید شاید با حروف ی و ک مساله دارید! یا اینکه یکی رو کل رشته رو پاک کنید و هر دو رو دوباره تایپ کنید. (خود " رو هم پاک کنید و دوباره تایپ کنید)
ببینید من اینکارو کردم که گزینه لطفا مرا انتخاب کنید را گذاشتم با value=1"" و بعد از اون پشت drop_selectedindexchanging میگم که اگه dropdown.selectedvalue="1" یه پیغام بده و ریترن کنه

mRizvandi
چهارشنبه 27 فروردین 1393, 23:35 عصر
این کاری که انجام دادید درست هست، اما اعتبارسنجیتون باید درست کار می کرد.موفق باشید.

salmah
چهارشنبه 27 فروردین 1393, 23:46 عصر
حتما از کپی پیست استفاده کنید و همون جمله رو از توی کد توی ولیدتور کپی کنید شاید با حروف ی و ک مساله دارید! یا اینکه یکی رو کل رشته رو پاک کنید و هر دو رو دوباره تایپ کنید. (خود " رو هم پاک کنید و دوباره تایپ کنید)
وافعا از لطفتون ممنون
کاملا از اول تایپ کردم.ولیدیشن درست شد. فقط الان به جای نمایش" انتخاب دوره" در dropdwnnمقدار صفر را نشون میده

mRizvandi
پنج شنبه 28 فروردین 1393, 12:32 عصر
فکر می کنم جای پارامترهای تعریف یک آیتم برای DropDown توی سایت برعکس شده
اول باید عنوان قرار بگیره "یک دوره را انتخاب کنید" سپس باید عدد 0 قرار بگیره. جای این دو رو توی کدتون عوض کنید.


DropDownList1.Items.Insert(0, new ListItem(
"یک دوره را انتخاب کنید"
, "0"
));

salmah
پنج شنبه 28 فروردین 1393, 14:35 عصر
فکر می کنم جای پارامترهای تعریف یک آیتم برای DropDown توی سایت برعکس شده
اول باید عنوان قرار بگیره "یک دوره را انتخاب کنید" سپس باید عدد 0 قرار بگیره. جای این دو رو توی کدتون عوض کنید.


DropDownList1.Items.Insert(0, new ListItem(
"یک دوره را انتخاب کنید"
, "0"
));

این را هم امتحان کردم. جالبه که این جوری validation کار نمیکنه....

mRizvandi
جمعه 29 فروردین 1393, 02:44 صبح
این را هم امتحان کردم. جالبه که این جوری validation کار نمیکنه....

عجب داستانی شد :چشمک:
حالا باید InitialValue رو با مقدار value این آیتمی که اضافه کردید مقداردهی کنید. مثلا همون عدد 0
مطمن باشید درست کار می کنه :لبخندساده: