تغییر مقدار یک سلول گرید ویو (GridView) در زمان اجرا با استفاده از رویداد RowDataBound در Asp.Net

در این مقاله میخواهیم مقدار یک سلول گرید ویو (GridView) در زمان اجرا را با استفاده از رویداد RowDataBound در Asp.Net تغییر دهیم

تغییر مقدار یک سلول گرید ویو (GridView) در زمان اجرا با استفاده از رویداد RowDataBound در Asp.Net

در این مقاله میخواهیم مقدار یک سلول گرید ویو (GridView) در زمان اجرا را با استفاده از رویداد RowDataBound در Asp.Net تغییر دهیم.

در جداول پایگاه داده، ما برخی از کدهای خاص داریم که دارای معانی خاص هستند برنامه نویسان از اهمیت این کدها آگاه هستند اما کاربران به درک معنی یک کد خاص نیازی ندارند از این رو با استفاده از رویداد RowDataBound، ما به صورت پویا (در زمان اجرا) می توانیم ارزش کد  برخی از کلمات معنی دار و آسان را به کلمات قابل درک تغییر دهیم.

ابتدا یک پروژه جدید از نوع وب فرم بسازید ویک صفحه جدید به پروژه خود اضافه کنید و از جعبه ابزار یک گرید ویو به صفحه اضافه کنید

   <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="OnRowDataBound">
        <Columns>
            <asp:BoundField DataField="Id" HeaderText="ردیف" ItemStyle-Width="50" />
            <asp:BoundField DataField="Name" HeaderText="نام" ItemStyle-Width="150" />
            <asp:BoundField DataField="Status" HeaderText="وضعیت" ItemStyle-Width="100" />
        </Columns>
    </asp:GridView>

در رویداد Page Load صفحه  یک DataTable به صورت داینامیک ساخته و اطلاعات زیر را به آن اضافه میکنیم:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id"), new DataColumn("Name"), new DataColumn("Status") });
            dt.Rows.Add(1, "ایمان", "غ");
            dt.Rows.Add(2, "مسعود", "ح");
            dt.Rows.Add(3, "احسان", "ح");
            dt.Rows.Add(4, "سجاد", "غ");
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
    }

سپس درون رویداد OnRowDataBound  مقادیر ستون وضعیت (Status ) فراخوانی شده و مقایسه میشوند اگر مقدارآن برابر غ بود سپس مقدار به غایب تنظیم میشود و اگر مقدار برابر ح بود مقدار به حاضر تنظیم میشود:

    protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            TableCell statusCell = e.Row.Cells[2];
            if (statusCell.Text == "غ")
            {
                statusCell.Text = "غایب";
            }
            if (statusCell.Text == "ح")
            {
                statusCell.Text = "حاضر";
            }
        }
    }

فایل های ضمیمه