PDA

View Full Version : مبتدی: ویرایش و درج اطلاعات در کنترل radgrid



adineh67
سه شنبه 10 آذر 1394, 10:05 صبح
سلام
من اطلاعاتم رو از دیتابیس و از طریق استورپروسیجر میخونم و به کنترل radgrid بایند میکنم.حالا میخوام گریدویو قابلیت ویرایش و درج اطلاعات رو داشته باشه البته به این شکل که وقتی بر روی دکمه ی ویرایش و یا درج کلیک کردم اطلاعات بر حسب نوعی که دارن در فیلدهای مرتبط با خودشون جا بگیرن مثلا اگه فیلدی نیاز به یه محدوده مقدار داشت واسش یه کمبوباکس نمایش داده بشه و یا اگه تاریخ بود یه کنترل تقویم نمایش داده بشه .
مشکلم اینه که اگه بخوام ستونهامو در زمان طراحی ایجاد کنم نمیدونم مقدارشون رو چجوری باید بایند کنم و اگه ستونها در زمان اجرا بصورت خودکار افزوده بشن نمیدونم چجوری تعیین کنم کمبوباکس باشن یا لیبل یا ...
ممنون میشم به یه شکل ساده و قابل درک راهنماییم کنید خود تلریک این کارو انجام داده ولی من متوجه نمیشم چجوری این کارو کرده :افسرده:

adineh67
شنبه 14 آذر 1394, 11:46 صبح
دوستان کسی میتونه راهنماییم کنه که چطور ستونهای گریدویو رو خودم طراحی کنم و مقادیر داخل استورپروسیجر رو به ستونها نسبت بدم
نمیخوام ستونها خودکار و در زمان اجرا ایجاد بشن

پیام حیاتی
شنبه 14 آذر 1394, 14:02 عصر
سلام
یک گرید به فرم اضافه کنید در properties خاصیت auto genrate column را برابر false قرار بدید ، در محیط کدنویسی design به صورت زیر می توانید ستون به گرید اضافه کنید :

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CssClass="grid_view" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2">
<Columns>
<asp:BoundField DataField="am_id" HeaderText="شماره" />
<asp:BoundField DataField="am_date_fa" HeaderText="تاریخ" />
<asp:BoundField DataField="am_city" HeaderText="شهر" />
<asp:BoundField DataField="am_user" HeaderText="کد نمایندگی" />
<asp:BoundField DataField="am_title_home" HeaderText="نوع بنا" />
<asp:BoundField DataField="am_eghdam" HeaderText="اقدام" />
<asp:BoundField DataField="am_metraj" HeaderText="متراژ" />
<asp:BoundField DataField="am_room" HeaderText="تعداد اتاق" />
<asp:BoundField DataField="am_year" HeaderText="سن بنا" />
<asp:BoundField DataField="am_main_price" HeaderText="قیمت کل" />
<asp:BoundField DataField="am_pish_price" HeaderText="پیش پرداخت" />
<asp:BoundField DataField="am_month_prices" HeaderText="مبلغ ماهانه" />
<asp:BoundField DataField="am_number" HeaderText="شماره تماس" />
<asp:BoundField DataField="am_descrip" HeaderText="توضیحات" />
<asp:TemplateField HeaderText="تصویر">
<ItemTemplate>
<asp:Image ID="img" runat="server" Width="100px" Height="100px" ImageUrl='<%# Eval("am_pic1","~/img/Home/{0}") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#FFF1D4" />
<SortedAscendingHeaderStyle BackColor="#B95C30" />
<SortedDescendingCellStyle BackColor="#F1E5CE" />
<SortedDescendingHeaderStyle BackColor="#93451F" />
</asp:GridView>


در قسمت کدنویسی سی شارپ (CodeBehind) دستور select تمامی مقادیر جدول را بنویسید،مثال :


con.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from T_Amlak where am_city= 'ایذه' and am_title_home='آپارتمان' ", con);
DataSet ds = new DataSet();
da.Fill(ds, "Temp");
if (ds.Tables[0].Rows.Count > 0)
{
GridView1.DataSource = ds;
GridView1.DataMember = "Temp";
GridView1.DataBind();
lblError.Visible = false;
}

موفق باشید.

adineh67
شنبه 14 آذر 1394, 14:52 عصر
سپاس از لطفتون
DataField چی هست و چه کاربردی داره؟
و اینکه من دستور سلکتم رو بصورت استورپروسیجر نوشتم چون دارم سه لایه کار میکنم و فقط تو پیج لود کد رو فراخوانی میکنم و به گرید بایند میکنم اما مقداری برای ستونها نمایش داده نمیشه

پیام حیاتی
شنبه 14 آذر 1394, 17:23 عصر
DataField:
https://msdn.microsoft.com/en-us/library/cc488523(v=vs.90).aspx
بنده به برنامه نویسی سه لایه آشنایی ندارم ، کدهاتون رو قرار بدید تا سایر دوستان بتونن کمک کنند.

adineh67
سه شنبه 17 آذر 1394, 11:10 صبح
استورپروسیجری که اطلاعاتم رو سلکت میکنه بصورت زیر هست:


select distinct Requestid ,[R-type].Description,begindate,name+' '+family from Request,[R-type] where ([R-type].Id=Request.Rtype)


این استورپروسیجر رو تو یه کلاس دیگه فراخوانیش کردم و هر وقت بهش نیاز داشتم از طریق همون کلاس بهش دسترسی پیدا کردم.مثلا تو پیج لود فرمم گریدویوی مربوطه رو اینطوری مقدار دادم:


grd.DataSource = Cntl.SelReqInfo(uid);
grd.DataBind();


مشکلم اینه که نمیخوام ستونها در زمان اجرا ایجاد بشن میخوام خودم طراحیشون کنم اما بلد نیستم بعدا مقدارشون رو تعیین کنم
ممنون میشم هر کی بلد هست راهنماییم کنه

adineh67
پنج شنبه 26 آذر 1394, 08:33 صبح
سلام
دوستان برنامه نویس عزیز من بشدت کارم لنگ این مورد هست خواهش میکنم اگه میتونید راهنمایی کنید :بوس:

notlikeothers
پنج شنبه 26 آذر 1394, 09:07 صبح
استورپروسیجری که اطلاعاتم رو سلکت میکنه بصورت زیر هست:


select distinct Requestid ,[R-type].Description,begindate,name+' '+family from Request,[R-type] where ([R-type].Id=Request.Rtype)


این استورپروسیجر رو تو یه کلاس دیگه فراخوانیش کردم و هر وقت بهش نیاز داشتم از طریق همون کلاس بهش دسترسی پیدا کردم.مثلا تو پیج لود فرمم گریدویوی مربوطه رو اینطوری مقدار دادم:


grd.DataSource = Cntl.SelReqInfo(uid);
grd.DataBind();


مشکلم اینه که نمیخوام ستونها در زمان اجرا ایجاد بشن میخوام خودم طراحیشون کنم اما بلد نیستم بعدا مقدارشون رو تعیین کنم
ممنون میشم هر کی بلد هست راهنماییم کنه
خاصیت autogenerate رو falseکنید


<asp:TemplateColumn HeaderText="anything">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem,"tablefield").ToString()%>
</ItemTemplate>
</asp:TemplateColumn>

adineh67
پنج شنبه 26 آذر 1394, 11:10 صبح
خاصیت autogenerate رو falseکنید


<asp:TemplateColumn HeaderText="anything">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem,"tablefield").ToString()%>
</ItemTemplate>
</asp:TemplateColumn>


سپاس از لطفتون
من تقریبا همین کارو انجام دادم اما از تگ <ItemTemplate> ایراد میگیره،ممنون میشم بگید ایراد کارم با توجه به عکسی که گذاشتم کجاست؟
137495

adineh67
شنبه 28 آذر 1394, 13:37 عصر
دوستان کسی نمیتونه منو راهنمایی کنه؟:ناراحت:

adineh67
شنبه 05 دی 1394, 11:28 صبح
خاصیت autogenerate رو falseکنید


<asp:TemplateColumn HeaderText="anything">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem,"tablefield").ToString()%>
</ItemTemplate>
</asp:TemplateColumn>


دوست عزیز بالاخره با توضیحاتی که دادین تونستم کدم رو درست کنم فقط الان یه مشکلی دارم و اونم اینکه میخوام وقتی یه سطر از گرید رو انتخاب کردم مقدار اولین فیلد اون سطر رو انتخاب کنه و بفرسته به یه صفحه ی دیگه
راهی که به ذهنم رسید commandArgument بود که به این شکل نوشتمش اما ازم ایراد میگیره:


CommandArgument='<%#Eval("کدارجاع")%>'

کدارجاع عنوان ستونی هست که میخوام مقدارشو انتقال بدم

notlikeothers
شنبه 05 دی 1394, 12:12 عصر
دوست عزیز بالاخره با توضیحاتی که دادین تونستم کدم رو درست کنم فقط الان یه مشکلی دارم و اونم اینکه میخوام وقتی یه سطر از گرید رو انتخاب کردم مقدار اولین فیلد اون سطر رو انتخاب کنه و بفرسته به یه صفحه ی دیگه
راهی که به ذهنم رسید commandArgument بود که به این شکل نوشتمش اما ازم ایراد میگیره:


CommandArgument='<%#Eval("کدارجاع")%>'

کدارجاع عنوان ستونی هست که میخوام مقدارشو انتقال بدم



شما جای "کد ارجاع" اسم فیلد که کد ارجاع تو دیتا بیس داره رو بزارید مثلا اسمم مسعود که نباید اینجا بنویسم مسعود باید اسم فیلد که name هست رو بزارم

adineh67
شنبه 05 دی 1394, 14:48 عصر
ببینید دوست عزیز الان دقیقا اون چیزیو نوشتم که واسه ستونمم نوشتمش ولی بازم خطا میده:


<telerik:RadGrid ID="grid" runat="server"
onitemcommand="grid_ItemCommand" CommandArgument='<%#Eval("rid")%>'
AutoGenerateColumns="False">
<ClientSettings EnablePostBackOnRowClick="true">
<Selecting AllowRowSelect="True"></Selecting>
</ClientSettings>
<MasterTableView>
<Columns>
<telerik:GridTemplateColumn
FilterControlAltText="Filter column column" HeaderText="کدارجاع"
UniqueName="کدارجاع">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "rid").ToString()%>
</ItemTemplate>