توضیحات و دانلود

استفاده از RadioButtons باکنترل GridView در ASP.Net
0 0
استفاده از RadioButtons باکنترل GridView در ASP.Net

با سلام  در این مقاله توضیح خواهیم داد که چگونه از RadioButtons در GridView با Asp.net استفاده کنیم تا آن را به طور متقابل منحصر به فرد کند تا کاربر بتواند فقط یک رکورد را انتخاب کند.

بانک اطلاعاتی

برای این مقاله از پایگاه داده مایکروسافت Northwind استفاده می کنیم .

کد GridView

<asp:GridView ID="GridView1" runat="server"

HeaderStyle-BackColor = "green"

AutoGenerateColumns = "false" Font-Names = "Arial"

OnPageIndexChanging = "OnPaging"

Font-Size = "11pt" AlternatingRowStyle-BackColor = "#C2D69B"

AllowPaging = "true">

<Columns>

<asp:TemplateField>

<ItemTemplate>

    <asp:RadioButton ID="RadioButton1" runat="server"

        onclick = "RadioCheck(this);"/>

    <asp:HiddenField ID="HiddenField1" runat="server"

        Value = '<%#Eval("CustomerID")%>' />

</ItemTemplate>

</asp:TemplateField>

<asp:BoundField ItemStyle-Width="150px" DataField="CustomerID"

    HeaderText="CustomerID"  />

<asp:BoundField ItemStyle-Width="150px" DataField="City"

    HeaderText="City" />

<asp:BoundField ItemStyle-Width="150px" DataField="PostalCode"

    HeaderText="PostalCode"/>

</Columns>

</asp:GridView>

شما متوجه خواهید شد که یک RadioButton و یک فیلد مخفی در Itemtemplate وجود دارد. فیلد پنهان شناسه مشتری را که اهمیت آن بعدا شرح داده می شود، ذخیره می کند

اطلاعات مرتبط با GridView

تابع زیر در Datbind ASP.Net GridView استفاده می شود .

C #

private void BindGrid()

{

    string strQuery = "select CustomerID,City,PostalCode" +

        " from customers";

    DataTable dt = new DataTable();

    String strConnString = System.Configuration.ConfigurationManager

                .ConnectionStrings["conString"].ConnectionString;

    SqlConnection con = new SqlConnection(strConnString);

    SqlDataAdapter sda = new SqlDataAdapter();

    SqlCommand cmd = new SqlCommand(strQuery);

    cmd.CommandType = CommandType.Text;

    cmd.Connection = con;

    try

    {

        con.Open();

        sda.SelectCommand = cmd;

        sda.Fill(dt);

        GridView1.DataSource = dt;

        GridView1.DataBind();

    }

    catch (Exception ex)

    {

        throw ex;

    }

    finally

    {

        con.Close();

        sda.Dispose();

        con.Dispose();

    }

}

VB.Net

Private Sub BindGrid()

   Dim strQuery As String = "select CustomerID,City,PostalCode" & _

            " from customers"

   Dim dt As New DataTable()

   Dim strConnString As String = System.Configuration.ConfigurationManager _

        .ConnectionStrings("conString").ConnectionString

   Dim con As New SqlConnection(strConnString)

   Dim sda As New SqlDataAdapter()

   Dim cmd As New SqlCommand(strQuery)

   cmd.CommandType = CommandType.Text

   cmd.Connection = con

   Try

        con.Open()

        sda.SelectCommand = cmd

        sda.Fill(dt)

        GridView1.DataSource = dt

        GridView1.DataBind()

   Catch ex As Exception

        Throw ex

   Finally

        con.Close()

        sda.Dispose()

        con.Dispose()

   End Try

End Sub

همانطور که متوجه شدید، SQL Query در جدول مشتریان اجرا  و اتصال داده های به کنترل GridView ASP.Net بازگشت داده می شود .

از تابع فوق در رویداد Page Load مانند زیر ارتباط می گیریم .

C #

protected void Page_Load(object sender, EventArgs e)

{

    GetSelectedRecord();

    BindGrid();           

}

VB.Net

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

    GetSelectedRecord()

    BindGrid()  

End Sub

توجه داشته باشید در اینجا یک تابع دیگر را GetSelectedRecord  می گذاریم که بعدا توضیح داده خواهد شد

حفظ حالت RadioButtons

از متغیر ViewState برای ذخیره شناسه رکورد انتخاب شده استفاده می کنیم. این کمک می کند که حالت RadioButtons را به خاطر بسپارد. برای رسیدن به این هدف، از دو عمل زیر استفاده می کنیم .

private void GetSelectedRecord()

{

    for (int i = 0; i < GridView1.Rows.Count; i++)

    {

        RadioButton rb = (RadioButton)GridView1.Rows[i]

                        .Cells[0].FindControl("RadioButton1");

        if (rb != null)

        {

            if (rb.Checked)

            {

                HiddenField hf = (HiddenField)GridView1.Rows[i]

                                .Cells[0].FindControl("HiddenField1");

                if (hf != null)

                {

                    ViewState["SelectedContact"] = hf.Value;

                }

 

                break;

            }

        }

    }

}

VB.Net

Private Sub GetSelectedRecord()

        For i As Integer = 0 To GridView1.Rows.Count - 1

            Dim rb As RadioButton = DirectCast(GridView1.Rows(i).Cells(0) _

             .FindControl("RadioButton1"), RadioButton)

            If rb IsNot Nothing Then

                If rb.Checked Then

                    Dim hf As HiddenField = DirectCast(GridView1.Rows(i).Cells(0) _

                     .FindControl("HiddenField1"), HiddenField)

                    If hf IsNot Nothing Then

                        ViewState("SelectedContact") = hf.Value

                    End If

 

                    Exit For

                End If

            End If

        Next

End Sub

 کارکرد فوق از طریق تمام رکوردها در صفحه کنترل GridView ASP.Net  بررسی می شود و اگر RadioButton چک شود، شناسه ذخیره شده در فیلد پنهان مربوطه در ViewState ذخیره می شود. این روش  رویداد بارگذاری صفحات  نامیده می شود.

C #

private void SetSelectedRecord()

{

    for (int i = 0; i < GridView1.Rows.Count; i++)

    {

        RadioButton rb = (RadioButton)GridView1.Rows[i].Cells[0]

                                        .FindControl("RadioButton1");

        if (rb != null)

        {

            HiddenField hf = (HiddenField)GridView1.Rows[i]

                                .Cells[0].FindControl("HiddenField1");

            if (hf != null && ViewState["SelectedContact"] != null)

            {

                if (hf.Value.Equals(ViewState["SelectedContact"].ToString()))

                {

                    rb.Checked = true;

                    break;

                }

            }

        }

    }

}

VB.Net

Private Sub SetSelectedRecord()

        For i As Integer = 0 To GridView1.Rows.Count - 1

            Dim rb As RadioButton = DirectCast(GridView1.Rows(i) _

                    .Cells(0).FindControl("RadioButton1"), RadioButton)

            If rb IsNot Nothing Then

                Dim hf As HiddenField = DirectCast(GridView1.Rows(i) _

                    .Cells(0).FindControl("HiddenField1"), HiddenField)

              If hf IsNot Nothing And ViewState("SelectedContact") IsNot Nothing Then

                    If hf.Value.Equals(ViewState("SelectedContact").ToString()) Then

                        rb.Checked = True

                        Exit For

                    End If

              End If

            End If

        Next

End Sub

تابع بالا اگر ID ViewState با هر ردیف منطبق باشد از طریق سوابق در صفحه فعلی کنترل GridView ASP.Net حل می شود و اگر آن را مطابق با RadioButton مربوطه بررسی کنیم . این تابع در  کنترل OnPageIndexChanging  , GridView ASP.Net نامیده می شود که در زیر شرح داده شده است

C #

protected void OnPaging(object sender, GridViewPageEventArgs e)

{

    GridView1.PageIndex = e.NewPageIndex;

    GridView1.DataBind();

    SetSelectedRecord();

}

VB.Net

Protected Sub OnPaging(ByVal sender As Object, ByVal e As GridViewPageEventArgs)

        GridView1.PageIndex = e.NewPageIndex

        GridView1.DataBind()

        SetSelectedRecord()

End Sub

 مشتری جاوا اسکریپت

برای اطمینان از اینکه تنها یک RadioButton چک  شود، عملکرد جاوا اسکریپت زیر باید بالا یا کل صفحه(در صورت استفاده از صفحات اصلی) بررسی شود .

<script type = "text/javascript">

     function RadioCheck(rb) {

        var gv = document.getElementById("<%=GridView1.ClientID%>");

        var rbs = gv.getElementsByTagName("input");

 

        var row = rb.parentNode.parentNode;

        for (var i = 0; i < rbs.length; i++) {

            if (rbs[i].type == "radio") {

                if (rbs[i].checked && rbs[i] != rb) {

                    rbs[i].checked = false;

                    break;

                }

            }

        }

    }    

</script>

این تابع اطمینان می دهد که تنها یک RadioButton چک شده است. و هنگام فراخوانی RadioButton توسط کاربر فراخوانی می شود. برای اطلاعات بیشتر، کد GridView داده شده در بالا را ببینید

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :