در این مقاله به همراه مثال به شما آموزش خواهیم داد که چگونه با DataBinder.Eval از IF شرطی در ASP.Net استفاده کنید.
DataBinder.Eval به همراه DataBound کنترل هایی مثل GridView، Repeater، DataList و … استفاده می شود. در ادامه ی مطلب نیز سورس برای دانلود قرار داده شده است …
تصویر کلی
در جدول های پایگاه داده (دیتابیس)، کد های خاصی داریم که معانی خاصی نیز دارند. برنامه نویس ها از اهمیت این کد ها آگاه اند اما کاربران متوجه نمی شوند که یک کد خاص به چه معنا می باشد. در چنین مواردی باید مقدار و مفهموم کد ها را به مفاهیم ساده تر و قابل درک تغییر دهیم.
برای مثال، سناریو یک جلسه ملاقات را تصور کنید. ستون وضعیت در پایگاه داده شامل دو مقدار A و P می باشد که A به مهنای غایب به طور مثال: شخصی که به جلسه نرسیده است و P به معنای حاضر به طور مثال: شخصی که خود را به جلسه رسانده است می باشد. اما کاربران متوجه نمی شوند که A و P به چه معنا می باشد، و از این رو با ساخت IF ELSE condition توسطEVAL function، A با غایب (Absent) و P با حاضر (Present) جا به جا می شوند که مفهموم آن را واضح تر می کند.
IF شرطی
HTML نشان گذاری شده زیر شامل یک GridView ASP.Net با دو ستون BoundField و یک ستون TemplateField می باشد.
با استفاده از Inline Expression، مفهموم EVAL function سنجیده و مقایسه می شود و اگر وضعیت A باشد ردیف غایب نشان داده می شود و در غیر این صورت حاضر نمایش داده می شود.
تذکر: syntax مورد استفاده در EVAL function به همراه Inline Expression برای C# و VB.Net متفاوت می باشد.
C#
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> <Columns> <asp:BoundField DataField="Id" HeaderText="Id" ItemStyle-Width="50" /> <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" /> <asp:TemplateField HeaderText="Status" ItemStyle-Width="100"> <ItemTemplate> <asp:Label Text='<%# Eval("Status").ToString() == "A" ? "Absent" : "Present" %>' runat="server" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
VB.Net
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> <Columns> <asp:BoundField DataField="Id" HeaderText="Id" ItemStyle-Width="50" /> <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" /> <asp:TemplateField HeaderText="Status" ItemStyle-Width="100"> <ItemTemplate> <asp:Label Text='<%# If(Eval("Status").ToString() = "A", "Absent", "Present") %>' runat="server" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
Namespaces
باید namespace زیر را وارد کنید.
C#
using System.Data;
VB.Net
Imports System.Data
Bind کردن کنترل GridView در ASP.Net
GridView با یک DataTable پویا به همراه مقداری اطلاعات مصنوعی در صفحه ی رخداد ها ایجاد شده است.
C#
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, "John Hammond", "A"); dt.Rows.Add(2, "Mudassar Khan", "P"); dt.Rows.Add(3, "Suzanne Mathews", "P"); dt.Rows.Add(4, "Robert Schidner", "A"); GridView1.DataSource = dt; GridView1.DataBind(); } }
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Me.IsPostBack Then Dim dt As New DataTable() dt.Columns.AddRange(New DataColumn(2) {New DataColumn("Id"), New DataColumn("Name"), New DataColumn("Status")}) dt.Rows.Add(1, "John Hammond", "A") dt.Rows.Add(2, "Mudassar Khan", "P") dt.Rows.Add(3, "Suzanne Mathews", "P") dt.Rows.Add(4, "Robert Schidner", "A") GridView1.DataSource = dt GridView1.DataBind() End If End Sub
هیچ دیدگاهی نوشته نشده است.