PDA

View Full Version : مقدار دهی به یک فیلد با توجه به فیلدی دیگر در GridView



mohammad973
سه شنبه 15 اسفند 1391, 22:10 عصر
دوستان ، چطور میشه با استفاده از TemplateFeild یا هرچیزی دیگه ، یک لیبل توی یکی از ستونهای یه GridVew داشت ، و مقدار Text اون رو بر حسب مقادیر ستون دیگر بدست آورد ؟

مثلا یک ستون ParentID داشته باشیم که الان مقدار 5 رو داشته باشه . من توی جدولم ، دنبال رکوردی بگردم که ID اون مساوی 5 باشه و وقتی به جواب رسیدم ، مقدار ستون name رو بردارم و جای 5 موجود در ParentID بگذارم !

mirahsani
چهارشنبه 16 اسفند 1391, 00:21 صبح
داخل code behind یک تابع بنویس که parent id رو بگیره و اون اسم مورد نظرتو پس بده.
بعد توی template field از اون تابع استفاده کن

mohammad973
چهارشنبه 16 اسفند 1391, 00:41 صبح
نه دوست عزیز ، این رو میدونم! توی نوشتن کد اون تابعه مشکل دارم! میشه تو این زمینه راهنمایی بفرمایید ؟

mirahsani
چهارشنبه 16 اسفند 1391, 00:52 صبح
متوجه نمیشم. سوال خیلی ساده ای داری میپرسی آخه
داخل تابعی که تو code behinde این کوئری رو فراخوانی کن:
select name from tablename where id=inputvariable
منظور از nputvariable همون ورودی تابع شماست که باید parentID باشه

mohammad973
چهارشنبه 16 اسفند 1391, 02:44 صبح
حق با شماست دوست عزیز ! فکرم مشغول بود و کمی خسته ، دیگه ذهنم یاری نمیکرد ! این کد رو هم نوشته بومدم ولی کاملش نکرده بودم هنوز !
درکل تشکر .

mohammad973
چهارشنبه 16 اسفند 1391, 16:29 عصر
من هر کدی که مینویسمک اشکال میگیره !
مثلا :



protected string parentName(object parent)
{
SqlConnection conn = new SqlConnection("Data Source=MOHAMMAD-PC\\MOHAMMADMSSERVER;Initial Catalog=h3rd_DB;Integrated Security=True");
SqlDataAdapter sda = new SqlDataAdapter("Select * from [ANGroup] where [ANG_ID]=34", conn);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds.Tables["ANGroup"].Rows[0]["ANG_name"].ToString();
}

mohammad973
چهارشنبه 16 اسفند 1391, 16:51 عصر
دوستان ، من وقتی کد زیر رو مینویسم خیلی خوب اجرا میشه ::



protected string parentName(object parent)
{
SqlConnection conn = new SqlConnection("Data Source=MOHAMMAD-PC\\MOHAMMADMSSERVER;Initial Catalog=h3rd_DB;Integrated Security=True");
string s = "Select * from [ANGroup] where [ANG_ID]=26";
SqlDataAdapter sda = new SqlDataAdapter(s, conn);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds.Tables[0].Rows[0]["ANG_name"].ToString();
}



ولی وقتی توی خط شماره 4 این تغییر رو میدم مشکل پیدا میکنه و خطا میده :



protected string parentName(object parent)
{
SqlConnection conn = new SqlConnection("Data Source=MOHAMMAD-PC\\MOHAMMADMSSERVER;Initial Catalog=h3rd_DB;Integrated Security=True");
string s = "Select * from [ANGroup] where [ANG_ID]="+parent.ToString();
SqlDataAdapter sda = new SqlDataAdapter(s, conn);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds.Tables[0].Rows[0]["ANG_name"].ToString();
}


یعنی هنگام تبدیل نوع parent مشکل پیدا میکنه ! parent هم یک متغیر از نوع عدد هست که از دیتابیس گرفته میشه . در واقع :


<asp:Label ID="Label1" runat="server" Text='<%# parentName(Eval("ANG_ParentID")) %>'></asp:Label>




پس چطور باید parent رو به رشته تبدیل کنم ؟

mirahsani
پنج شنبه 17 اسفند 1391, 00:22 صبح
چرا object گرفتیش؟
از اول رشته بگیرش

mohammad973
پنج شنبه 17 اسفند 1391, 02:17 صبح
خوب خروجی Eval که رشته نیست ! object هستش . مجبورم که object بگیرم !!!