PDA

View Full Version : مبتدی: دسترسي به كي گريد ويو



ma.andishe
چهارشنبه 13 دی 1391, 14:45 عصر
با سلام
لطفا اگه كسي ميتونه من را راهنمايي كنه و در صورت امكان يه نمونه كد بگذاره چون من تو asp تازه كار هستم.
من توي وب فرم يه گريدويو و يك فرم ويو دارم .وقتي وب فرم لود ميشه در ابتدا گريد اطلاعات يوزر رو نمايش ميده گريد ويو يك كمند فيلد داره كه و قتي اونو كليك ميكنيم اطلاعات ريز تري از يوزر را توي فرم ويو نمايش ميده.حالا سوال اين جاست :
1.براي نمايش اطلاعات با شرط ديتا كي گريد چطور ميتونم به كي گريد تو كد بيهايند دسترسي پيدا كنم؟
2.رويداد كليك كمند فيلد رو چطور پيدا كنم؟ و سپس از اونجا فرم ويو رو لود كنم؟

من با سي شارپ برنامه مينويسم و به صورت كد نه ويزارد.
اگه روش بهتري ميدونيد من را راهنمايي بفرماييد.ممنون

bftarane
چهارشنبه 13 دی 1391, 17:06 عصر
من با کامند فيلد بلد نيستم ولي خودم يه تمپليت به گريدويو اضافه مي کنم و يه دکمه توش مي ندازم براي دکمه CommandName و CommandArgument اختصاص مي دم و بعد در رويداد RowCommand گريدويو کاري که مي خوام انجام بدم بر اساس ID رو انجام مي دم مثلاً حذف رکورد، ويرايش رکورد
براي نمايش اطلاعات بر اساس سطر انتخاب شده هم مي تونيد Id مورد نظرتون رو به عنوان CommandArgument در نظر بگيريد و CommandName رو هم مثلاً ShowInfo بزاريد و در رويداد RowCommand بگيد اگه CommandName==ShowInfo برو اطلاعات اين CommandArgoument رو واکشي کن
..........................
در قسمت Peroperties به دکمه تون يه CommandName و CommandArgument بديد
مثل کد زير

<asp:Button ID="btn_del" runat="server" Text="حذف" CommandName="remove"
CommandArgument='<%# Eval("at_Id") %>' /> در قسمت Eventهاي گريدويو در پنجره Properties روي رويداد RowCommand گريدويو دابل کليک کنيد و داخل اون يه همچين چيزي بنا به برنامه خودتون بنويسيد

protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "remove")
{
int ID= Convert.ToInt32(e.CommandArgument);

حالا که به آي دي دسترسي داريد مي تونيد کوئري مورد نظرتون رو بنويسيد.

ma.andishe
چهارشنبه 13 دی 1391, 17:14 عصر
سلام دوست عزيز ممنون كه پاسخ دادي
فزض كن توي رويداد show هستيم واينجا ميخواهم بگم كه اطلاعات يوزر رو بر اساس id گريد توي ويو فرم نمايش بده .خوب حالا راهنمايي بفرما.ممنون

bftarane
چهارشنبه 13 دی 1391, 17:50 عصر
متوجه منظورتون نمي شم الآن شما تونستيد به آي دي دسترسي پيدا کنيد؟

ma.andishe
چهارشنبه 13 دی 1391, 17:56 عصر
درسته ولي ميخوام توي همون رويداد show فرم ويو را لود كنه و اطلاعات يوزر رو بر اساس ايدي بياره ونمايش بده
if (e.CommandName == "show")
{

int ID= Convert.ToInt32(e.CommandArgument);
نمايش فرم ويو با شرطاطلاعات=ايدي

bftarane
چهارشنبه 13 دی 1391, 18:18 عصر
کافيه در ادامه اين قسمت

protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "remove")
{
int ID= Convert.ToInt32(e.CommandArgument);


اطلاعات رو به هر نحوي که بلديد بر اساس ID که الآن ديگه بهش دسترسي داريد واکشي کنيد از ديتابيس و بعد به کنترلهاتون بايند کنيد من چون تا حالا با FormView کار نکردم با ليبل مي نويسم
الآن فرض کنيد از ديتاريدر مي خواهيم استفاده کنيم
شما يه همچين کدي مي تونيد بنويسيد (البته من از کلاس استفاده کردم که کلاسم رو اينجا ننوشتم شما ميتونيد با روش خودتون اطلاعات رو بخونيد)

SqlDataReader dr = MyDALBase.ExecuteReader(System.Data.CommandType.St oredProcedure, "GetArticleByArticleID", new SqlParameter[]{
new SqlParameter("@ArticleID",Request.QueryString["Code"])
});
dr.Read();
lbl_Content.Text = dr["at_Contents"].ToString();
lbl_title.Text = dr["at_Title"].ToString();
string ImageUrl = dr["at_pic"].ToString();

با FormVeiw هم احتمالاً اگه بخواهيد کار کنيد احتمالاً بايد همچين کدي بنويسيد

FormView1.DataSource = dr
FormView1.DataBind();
در ادامه کدي که در پست قبلي گذاشته بودم.
و ليبلهايي که داخل اون هستند رو به طريقي که در بالا گفتم بايند کنيد.
يا اينکه در قسمت Source به صورت زير بايند کنيد
مثلاً يه همچين کدي

<asp:Label ID="lbl_Age" runat="server" Text='<%#Eval("UserAge") %>'></asp:Label>
اگه بازم کارتون راه نيفتاد اطلاع بديد براتون يه نمونه فردا صبح قرار بدم.

bftarane
چهارشنبه 13 دی 1391, 20:03 عصر
فايل رو ضميمه کردم.
جدول رو ديگه نزاشتم عکسش رو مي زارم سريع مي تونيد درست کنيد.
connectionStrings رو يادتون نره در web.config با توجه به بانک خودتون تنظيم کنيد.
اين عکس جدول

97755

اينم يه عکس از اجراي سايت
97757
در ضمن من با Visual studio 2010 کار مي کنم اگه نتونستيد برنامه رو اجرا کنيد با NotePad کدها رو مي تونيد ببينيد.

ma.andishe
پنج شنبه 14 دی 1391, 11:16 صبح
سلام
دست شما درد نكنه درست شد.اما يه سوال
ببينيد من برنامه نويس ويندوز هستم و توي خيلي موارد هنوز با اين ديدگاه به برنامه نويسي وب نگاه ميكنم.پس اگه جايي اشتباه ميكنم من را راهنمايي كنييد.
من دارم يه برنامه وب كه به صورت سه لايه هست مينويسم.توي اين برنامه اگه من اطلاعات يوزر را توي لايه bll بازيابي كنم و بخواهم اين اطلاعات رو توي لايه ui نمايش بدم يعني انتصاب اطلاعاتي كه توي لايه bll هستن به تكست باكس هاي لايه ui.
تكست باكس ها توي فرم ويو توي لايه ui ميباشند .حالا با اين حساب باز هم نياز به بايند كردن اطلاعات توي سورس هست و ضمنا توي سورس نياز هست كه ارجاع به لايه bll رو مثلا براي فرم ويو معرفي كنيم؟