PDA

View Full Version : ولدیشن انتخاب حداقل یک سطر از گرید ویو



angel farahani
دوشنبه 22 اردیبهشت 1393, 21:29 عصر
با سلام ، دوستان من میخوام کاربرم در گرید حداقل یک آیتم را انتخاب کنه تا بتونه با دکمه به صفحه بعدی بره ، حالا چطور با ولیدشن مشخص کنم که حداقل یک سطر از گرید انتخاب بشه ؟

و همچنین با ولدیشن مجبور بشه که تعداد آن آیتم رو مشخص کنه . ممنونم لطفا راهنماییم کنید

118916

angel farahani
سه شنبه 23 اردیبهشت 1393, 10:11 صبح
لطفا یکی راهنمایی کنه :(

mRizvandi
سه شنبه 23 اردیبهشت 1393, 11:21 صبح
یک پیشنهاد دارم، ولی چون تجربه اش نکردم، مطمن نیستم که جواب میده یا نه:
باید برای هر TextBox یک ولیدیتور بذارید و اون رو به تکست باکس متصل کنید و خصوصیت ValidationGroup اون رو با دکمه مورد نظرتون یکسان تنظیم کنید.
اما برای چک باکس، ولیدیتوری نداریم که بتونید استفاده کنید، می تونید قبل از اجرای کد دکمه، با جاوا بررسی کنید که گزینه ای تیک خورده یا نه، اگر نخورده بود، یک پیغام بدید. اگر خورده بود کد سمت دکمه اجرا بشه.
یک پیشنهاد دیگه اینکه می تونید مقدار پیش فرض برای تکست باکسها تعیین کنید، مثلا عدد 1، و کاربر فقط نیاز باشه که چک باکس رو تیک کنه.
به نظرم یه خرده سناریو رو تغییر بدید، میشه بهترش کرد. مثلا به جای چک باکس دکمه اضافه به سبد خرید بذارید.

angel farahani
سه شنبه 23 اردیبهشت 1393, 13:05 عصر
از آنجایی که این منوی غذایی در داخل گرید هست من در حالت تمپلیت required دادم و به تکست باکس نسبت دادم و ولیدشن گروپ required رو با دکمه یکی دادم اما فرقی نکرد ، من با placeholder مقدار پیش فرض 0 رو دادم ، حالا دیگه چیکار کنم ؟ :( باشه واسه کد جاوا سرچ میکنم .

angel farahani
سه شنبه 23 اردیبهشت 1393, 20:53 عصر
من با این آموزش برای ولدیشن چک باکس پیش رفتم اما جواب نگرفتم :

http://www.aspsnippets.com/Articles/Validate-GridView-with-CheckBox-at-least-one-checked-using-JavaScript-in-ASPNet.aspx

meisam12
سه شنبه 23 اردیبهشت 1393, 21:00 عصر
ابتدا روی گریدت پیمایش کن و اون چک باکس را به دست بیاور اگر حداقل یکی انتخاب شده بود validation صفحه را true کن در غیر اینصورت false کن.

angel farahani
سه شنبه 23 اردیبهشت 1393, 21:21 عصر
سپاس ، اما انوقت با کدوم ولیدیتور مانع از این بشم که به صفحه ی بعد نره یا اگر false باشه نمیره ؟

page.isvalid=true رو که می نوبسم ، میگه این خصوصیت فقط خوندنییه ، مقدار نمی گیره

angel farahani
سه شنبه 23 اردیبهشت 1393, 21:24 عصر
میشه در ارتباط با اون آموزشی که لینکشو رو در پست بالا گذاشتم راهنمایی کنید که چرا جواب نمیده ؟ حتی کد برنامه اون سایت رو هم دانلود کردم جواب نمیداد و در IE از یه قسمتیش خطا می گرفت ، لطفا راهنماییم کنید :(

meisam12
سه شنبه 23 اردیبهشت 1393, 21:29 عصر
یک نمونه پروژه کوچک برات آپلود کردم.

angel farahani
سه شنبه 23 اردیبهشت 1393, 21:36 عصر
ممنونم از شما ، ولی یه خورده پیچیده است برا من ، اجراش کردم این خطا رو میده Could not load type 'ValidationCheckBoxGridView.Default' این پسوندش واقعا دیفالت هست ؟

meisam12
سه شنبه 23 اردیبهشت 1393, 21:45 عصر
من الان اجراش کردم هیچ مشکلی نداشت.

meisam12
سه شنبه 23 اردیبهشت 1393, 21:48 عصر
کاری که من کردم یک گرید گذاشتم و یک چک باکس به نام cbSelectedFood گذاشتم.


<asp:GridView ID="grdFoods" runat="server" AutoGenerateColumns="False" CellPadding="4"
ForeColor="#333333" GridLines="None" Width="95%">
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle HorizontalAlign="Center" BackColor="#EFF3FB" />
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField HeaderText="نام غذا" DataField="Name" />
<asp:BoundField HeaderText="قیمت غذا" DataField="Price" DataFormatString="{0:c1}" />
<asp:TemplateField HeaderText="انتخاب غذا">
<ItemTemplate>
<asp:CheckBox ID="cbSelectedFood" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>


بعد یک CustomValidation گذاشتم و دو بار روش کلیک کردم و کد زیر را نوشتم.

<asp:CustomValidator ID="cvOrderFood" runat="server" ErrorMessage="کاربر گرامی شما حداقل باید یک غذا سفارش دهید"
ForeColor="Red" OnServerValidate="cvOrderFood_ServerValidate" SetFocusOnError="True">&nbsp;</asp:CustomValidator>



protected void cvOrderFood_ServerValidate(object source, ServerValidateEventArgs args)
{
bool isSelectedFood = false;

foreach (GridViewRow row in grdFoods.Rows)
{
CheckBox cbSelectedFood = row.FindControl("cbSelectedFood") as CheckBox;

if (cbSelectedFood.Checked)
{
isSelectedFood = true;
break;
}
}

args.IsValid = isSelectedFood;
}


و بعد روی دکمه سفارش غذا کد زیر را نوشتم

protected void btnOrder_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
//دستورات سفارش غذا
}
}

angel farahani
سه شنبه 23 اردیبهشت 1393, 22:25 عصر
باشه انجام میدم و اعلام نتیجه میکنم . ممنونم

angel farahani
سه شنبه 23 اردیبهشت 1393, 22:37 عصر
خیلی ممنونم ، جواب داد :)