PDA

View Full Version : استفاده از مقدار یک فیلد DataSource بایند شده



maktab
سه شنبه 27 دی 1390, 11:30 صبح
من Repeater را به یک DataSource وصل کردم. حالا میخوام در صفحه asp بگم اگر فلان فیلد بانک اطلاعاتیم برابر 1 بود یک متن را نمایش بده. ولی همان طور که میدونید متدهای بایند مثل Bind، Eval و... فقط در کنترل ها کاربرد دارند نه در دستورات مثل شرط ها. حالا من میخوام از مقدار یک فیلد در شرط استفاده کنم باید چکار کنم؟

hamid_shrk
سه شنبه 27 دی 1390, 11:37 صبح
خوب اینکار رو تو استور پروسیجرتون انجام بدید / منظورم گذاشتن شرط هست

maktab
سه شنبه 27 دی 1390, 11:47 صبح
خوب اینکار رو تو استور پروسیجرتون انجام بدید / منظورم گذاشتن شرط هست
خب من یک عکس دارم و وقتی میخوام نشونش بدم که آن فیلد برابر یک باشه. نمیتونم از استور پروسیجر استفاده کنم چون مثلا در یه صفحه ممکنه برای بعضی اخبارها باشه برای برخی دیگه نه.

hamid_shrk
سه شنبه 27 دی 1390, 11:56 صبح
متنی که میخواید نشون بده متن مشخصی هست؟
مثلا میخواید اگه عکس نداشت عنوان خبر را نشون بده؟
اگه اینطوریه به خاصیت alt از تگ img عنوان رو بایند کن

alonemm
سه شنبه 27 دی 1390, 12:02 عصر
باسلام:
از رویداد RowDataBound استفاده کنید.

مثال :
http://msdn.microsoft.com/en-us/library/aa479353.aspx

maktab
سه شنبه 27 دی 1390, 12:10 عصر
متنی که میخواید نشون بده متن مشخصی هست؟

ببخشید اول که نوشتم متن منظورم یک مثال بود. همان طور که بعدا گفتم من یه عکس دارم. حالا برای بعضی اخبارها نمایش داده میشه برای برخی نه. (البته یه عکس ساده نیست! براش دستورات نوشتم مثلا کلیک و...). حالا توی بانکم یه فیلد دارم اگر یک بود این عکس نمایش داده میشه اگر صفر نمایش داده نمیشه. توی یه صفحه هم ممکنه برای برخی اخبار نمایش داده بشه برای برخی دیگه نه.
در کل چطور میشه مشخص کرد اگر فلان فیلد بایند شده برابر فلان مقدار باشه یک کنترل نمایش داده بشه.
ممنون

hamid_shrk
سه شنبه 27 دی 1390, 12:19 عصر
پس از روشی که دوستمون در بالا اشاره کردن استفاده کنید

maktab
سه شنبه 27 دی 1390, 12:25 عصر
باسلام:
از رویداد RowDataBound استفاده کنید.


میشه درباره این دستوارت یه توضیحی بدید.


void employeesGridView_RowDataBound(object sender, GridViewRowEventArgs e) { // For each DataRow in the GridView, // programmatically access the BulletedList, filter // the DataView based on the GridView row's // EmployeeID value and bind the filtered DataView // to the BulletedList if (e.Row.RowType == DataControlRowType.DataRow) { BulletedList bl = (BulletedList)e.Row.FindControl("bltTerritories"); territoryData.RowFilter = "EmployeeID = " + ((DataRowView) e.Row.DataItem)["EmployeeID"].ToString(); bl.DataSource = territoryData; bl.DataBind(); } } DataView territoryData; // this DataView will hold all of the Territories, loaded at Page_Load void Page_Load(object sender, EventArgs e) { // Load all of the territories into a DataView from the SqlDataSource territoryData = (DataView)territoriesDataSource.Select(DataSourceS electArguments.Empty); }
ممنون

alonemm
سه شنبه 27 دی 1390, 13:30 عصر
توضیح کوتاه:
یک شرط برای اینکه نوع GridViewRowEventArgs مشخص بشه.
تعریف یک BulletedList و پیدا کردن این شی از ردیف جاری در گرید ویو.
عملیات فیلتر بروی شی DataView که برای دستیابی به اجزای یک DataSource در پیج لود معرفی گردیده.
معرفی این DataView به عنوان منبع داده و بایند کردن گرید.


شاید باشید.

alonemm
سه شنبه 27 دی 1390, 13:35 عصر
یک مثال دیگه:
فرض یک فیلد گرید شما که تصویر هست:

<asp:TemplateField>

<ItemTemplate>

<asp:Image ID="DocumentImage" runat="server" ImageUrl='<%# "images/" + Eval("DocumentTypeField") + ".gif" %>' />

</ItemTemplate>

</asp:TemplateField>


اگر خالی بود و مثل نمایش یک آدرس دیگر:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
Image documentImage = e.Row.FindControl("DocumentImage") as Image;
if (documentImage != null)
{
// set here your default image when the one from the database is null or empty
if (string.IsNullOrEmpty(documentImage.ImageUrl) || !System.IO.File.Exists(Server.MapPath(documentImag e.ImageUrl)))
documentImage.ImageUrl = "unknown.gif";
}
}




از کدنویسی لذت ببرید.