این مثال نحوه استفاده از رویداد RowDataBound در GridView را برای برجسته کردن سطرها یا سلولها در ASP.NET نشان میدهد. این مثال در شرایطی مفید است که باید ردیفها یا سلولهای GridView را بر اساس یک شرایط خاص برجسته کنید. برای اهداف نمایشی، من یک پایگاه داده (به نام Database.mdf) ایجاد کردم که در آن جدولی داریم (به نام tbl_Employee).
شکل زیر جدول استفاده شده در این مثال است:
- CREATE TABLE [dbo].[tbl_Employee] (
- [Id] INT NOT NULL,
- [Name] VARCHAR (50) NULL,
- [City] VARCHAR (50) NULL,
- [Salary] INT NULL,
- PRIMARY KEY CLUSTERED ([Id] ASC)
- );
شروع کنیم. از روش زیر استفاده کنید.
- یک کنترل GridView را از جعبه ابزار رها کنید و ویژگی AutoGenerateColumns را روی false قرار دهید.
- برای مدیریت مجموعه فیلدهای ستون، یک مجموعه ستون (عنصر) اضافه کنید.
- در داخل تگ Columns، یک فیلد ستونی (BoundField) اضافه کنید که مقدار یک فیلد را در منبع داده نمایش می دهد.
- ویژگی DataField را به نام ستون در جدول برای اتصال به شی BoundField تنظیم کنید و مقدار HeaderText را برای نمایش آن در هدر GridView تنظیم کنید.
- یک رویداد RowDataBound به GridView اضافه کنید.
کد Default.aspx
- <form id="form1" runat="server">
- <div>
- <asp:GridView ID="GridView1" runat="server" CellPadding="6" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound">
- <Columns>
- <asp:BoundField DataField="Id" HeaderText="Id"/>
- <asp:BoundField DataField="Name" HeaderText="Name"/>
- <asp:BoundField DataField="City" HeaderText="City"/>
- <asp:BoundField DataField="Salary" HeaderText="Salary"/>
- </Columns>
- </asp:GridView>
- </div>
- </form>
در این مثال، من ردیف کامل را برای کارمندی با حقوق کمتر از 10000 برجسته می کنم.
Default.aspx.cs Code
- using System;
- using System.Web.UI.WebControls;
- using System.Data;
- using System.Data.SqlClient;
- using System.Configuration;
- using System.Drawing;
- public partial class _Default : System.Web.UI.Page
- {
- SqlConnection con;
- //Connection String from Web.config file
- string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
- protected void Page_Load(object sender, EventArgs e)
- {
- if(!IsPostBack)
- {
- ShowData();
- }
- }
- //method for Displaying Data in Gridview
- protected void ShowData()
- {
- DataTable dt = new DataTable();
- con = new SqlConnection(cs);
- SqlDataAdapter adapt = new SqlDataAdapter("select * from tbl_Employee",con);
- con.Open();
- adapt.Fill(dt);
- con.Close();
- GridView1.DataSource = dt;
- GridView1.DataBind();
- }
- //RowDataBound Event
- protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
- {
- //Checking the RowType of the Row
- if(e.Row.RowType==DataControlRowType.DataRow)
- {
- //If Salary is less than 10000 than set the row Background Color to Cyan
- if(Convert.ToInt32(e.Row.Cells[3].Text)<10000)
- {
- e.Row.BackColor = Color.Cyan;
- }
- }
- }
- }
پیش نمایش
مثال 2
فرض کنید باید نام Employee را برجسته کنیم اما نه کل ردیف GridView. با استفاده از کد زیر می توانیم این کار را انجام دهیم:
- protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
- {
- //Checking the RowType of the Row
- if (e.Row.RowType == DataControlRowType.DataRow)
- {
- //If Salary is less than 10000 than set the Cell BackColor to Red and ForeColor to White
- if (Convert.ToInt32(e.Row.Cells[3].Text) < 10000)
- {
- e.Row.Cells[1].BackColor = Color.Red;
- e.Row.Cells[1].ForeColor = Color.White;
- }
- }
- }
پیش نمایش
![](https://www.c-sharpcorner.com/UploadFile/1e050f/rowdatabound-event-in-gridview-in-Asp-Net/Images/image2.png)
امیدوارم ازش خوشتان بیاید. با تشکر.
مقالات دیگر من در GridView: