PDA

View Full Version : تغییرات در سطر های یک دیتا گرید



mirza
شنبه 12 فروردین 1385, 10:56 صبح
سلام
من یک دیتا گرید دارم که میخوام بر اساس یکی از فیلدهای دیتابیس بعضی از سطرهای دیتا گرید

با فونت بزرگتر یا یک رنگ دیگر نمایش داده شوند مثلا رکورد هایی که فیلد flag اونها 1 هست با فونت bold و اونهایی که 0 هستند با فونت معمولی نمایش داده شوند
آیا راهی برای این کار هست؟
ممنون

manager
شنبه 12 فروردین 1385, 13:48 عصر
اگه عجله دارید فعلا از این روش استفاده کنید

1- راه اول :(به سبک برنامه نویسان Asp قدیمی)






<%=((bool)DataBinder.Eval(Container.DataItem,"state"))?"<Font Color='Red' Size='8pt'><b>":""%>
...
Some things that you want show if state was true ...
...
<%=((bool)DataBinder.Eval(Container.DataItem,"state"))?"</b></Font>":""%>


2- سبک جدید :




&nbsp;<asp:GridView ID="GridView1" runat="server"

OnDataBound="GridView1_DataBound" AutoGenerateColumns="False">

<Columns>

<asp:BoundField DataField="state" DataFormatString="<font color='red'><b>{0}</b></font>" />

</Columns>

</asp:GridView>



که در اینجا state نام یک Column از جدول می باشد که من در اینجا خودم اضافش کردم :




DataColumn dc = new DataColumn("state");
dc.Expression = "IIF(Discontinued,ProductName,'')";
dt.Columns.Add(dc);
GridView1.DataSource = dt.DefaultView;





که می توانید به جای ProductName یه پیغام نیز نمایش دهید.

3- باز هم راه داره ..:لبخند:

iekrang
شنبه 12 فروردین 1385, 16:34 عصر
میشه لطفاً در مورد روش دوم بیشتر توضیح بدید؟

roya2002_80
شنبه 12 فروردین 1385, 16:37 عصر
سلام روشی که به ذهن من رسید در ادامه اومده:
1) فیلدی از دیتابیس که تعیین می کند سطر به یه رنگ دیگر در بیاد (در اینجا flag از نوع Bit) است را به ستونهای دیتاگرید اضافه کنید(در اینجا ستون شماره 1 است; شماره ها از 0 شروع می شود) و این ستون را به کاربر نشان ندهید(خاصیت visible این ستون را بردارید)
2) بعد از بایند کردن دیتاگرید کد زیر را اضافه کنید; ستون اول دیتاگرید ار نوع Template Column است که درون آن یک لیبل به نام lblname تعریف شده :

foreach(DataGridItem dataGridItem in Datagrid1.Items)
{
Label lbl=((Label)dataGridItem.FindControl("lblname"));

if (dataGridItem.Cells[1].Text=="True")
lbl.ForeColor=Color.Green;
}


کد بالا در تمام سطرهای دیتاگرید جستجو می کند و هر سطر را بر اساس flagی که در ان سطر می باشد تغییر می دهد.

manager
شنبه 12 فروردین 1385, 21:03 عصر
تو روش دوم شما یک ستون جدید ایجاد می کنید تا بتونید محتویات هر سلول را نسبت به سایر سلول ها تنظیم کنید. این قسمت را در Expression یک DataColumn می تونید ست کنید که یه عبارت خاص هست ( تو MSDN می تونید راجع بهش مطالب بیشتری پیدا کنید.)
بعد از اینکه شما DataColumn خودتون رو Add کردید توی DataGride یا GrideView می تونید از DataFormatString استفاده کنید تا شکل خاصی برای نمایش فیلدتون تنظیم کنید.