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

دریافت مقدار انتخاب شده در DropDownList در EditItemTemplate GridView با Asp.net
0 0
دریافت مقدار انتخاب شده در DropDownList در EditItemTemplate GridView با Asp.net

با سلام در این مقاله، با یک مثال، نحوه استفاده کنترل DropDownList در EditItemTemplate از کنترل GridView ASP.Net را با استفاده از C # و VB.Net توضیح خواهیم داد.
همچنین نحوه تنظیم مقدار قبلی ذخیره شده در مقدار انتخاب شده DropDownList را توضیح می دهد.
بانک اطلاعاتی
در اینجا از پایگاه Northwind استفاده می کنیم. شما می توانید آن را از اینجا دانلود کنید.دانلود Northwind پایگاه داده
کد HTML
کد HTML شامل کنترل GridView است. این صفحه 2 ستون نام و شهر دارد که نشان می دهد کدام شهر از طریق کنترل DropDownList قابل کنترل است . شناسه ستون Customer Id به ویژگی DataKeyNames متصل می شود.

<asp:GridView ID="gvCustomers" DataKeyNames="CustomerId" runat="server" AutoGenerateColumns="false"
    OnRowEditing="EditCustomer" OnRowDataBound="RowDataBound" OnRowUpdating="UpdateCustomer"
    OnRowCancelingEdit="CancelEdit">
    <Columns>
        <asp:BoundField DataField="ContactName" HeaderText="Contact Name" />
        <asp:TemplateField HeaderText="City">
            <ItemTemplate>
                <asp:Label ID="lblCity" runat="server" Text='<%# Eval("City")%>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:DropDownList ID="ddlCities" runat="server">
                </asp:DropDownList>
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:CommandField ShowEditButton="True" />
    </Columns>
</asp:GridView>

فضاهای نام
شما باید فضای نامهای زیر را وارد کنید.
C #

using System.Data;
using System.Configuration;
using System.Data.SqlClient;

VB.Net

Imports System.Data
Imports System.Configuration
Imports System.Data.SqlClient

جمع آوری GridView
درون رویداد بارگذاری صفحه از صفحه، GridView در پایگاه داده با استفاده از روش BindGrid پوشیده می شود.
C #

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        this.BindGrid();
    }
}
 
private void BindGrid()
{
    string sql = "SELECT TOP 10 CustomerID, ContactName, City FROM Customers";
    string conString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
    using (SqlConnection con = new SqlConnection(conString))
    {
        using (SqlDataAdapter sda = new SqlDataAdapter(sql, con))
        {
            using (DataTable dt = new DataTable())
            {
                sda.Fill(dt);
                gvCustomers.DataSource = dt;
                gvCustomers.DataBind();
            }
        }
    }
}

 VB.Net

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    If Not Me.IsPostBack Then
        Me.BindGrid()
    End If
End Sub
 
Private Sub BindGrid()
    Dim sql As String = "SELECT TOP 10 CustomerID, ContactName, City FROM Customers"
    Dim conString As String = ConfigurationManager.ConnectionStrings("conString").ConnectionString
    Using con As SqlConnection = New SqlConnection(conString)
        Using sda As SqlDataAdapter = New SqlDataAdapter(sql, con)
            Using dt As DataTable = New DataTable()
                sda.Fill(dt)
                gvCustomers.DataSource = dt
                gvCustomers.DataBind()
            End Using
        End Using
    End Using
End Sub

اتصال DropDownList در GridView
در داخل پردازنده رویداد OnRowDataBound ابتدا کنترل DropDownList ارجاع می شود و سپس با استفاده از مقادیر متمایز از شهرها درجدول مشتریان پر می شود.
سرانجام، شهر انتخاب شده در کنترل DropDownList تنظیم شده است.
C #

protected void RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow && gvCustomers.EditIndex == e.Row.RowIndex)
    {
        DropDownList ddlCities = (DropDownList)e.Row.FindControl("ddlCities");
        string sql = "SELECT DISTINCT City FROM Customers";
        string conString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
        using (SqlConnection con = new SqlConnection(conString))
        {
            using (SqlDataAdapter sda = new SqlDataAdapter(sql, con))
            {
                using (DataTable dt = new DataTable())
                {
                    sda.Fill(dt);
                    ddlCities.DataSource = dt;
                    ddlCities.DataTextField = "City";
                    ddlCities.DataValueField = "City";
                    ddlCities.DataBind();
                    string selectedCity = DataBinder.Eval(e.Row.DataItem, "City").ToString();
                    ddlCities.Items.FindByValue(selectedCity).Selected = true;
                }
            }
        }
    }
}


VB.Net

Protected Sub RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
    If e.Row.RowType = DataControlRowType.DataRow AndAlso gvCustomers.EditIndex = e.Row.RowIndex Then
        Dim ddlCities As DropDownList = CType(e.Row.FindControl("ddlCities"), DropDownList)
        Dim sql As String = "SELECT DISTINCT City FROM Customers"
        Dim conString As String = ConfigurationManager.ConnectionStrings("conString").ConnectionString
        Using con As SqlConnection = New SqlConnection(conString)
            Using sda As SqlDataAdapter = New SqlDataAdapter(sql, con)
                Using dt As DataTable = New DataTable()
                    sda.Fill(dt)
                    ddlCities.DataSource = dt
                    ddlCities.DataTextField = "City"
                    ddlCities.DataValueField = "City"
                    ddlCities.DataBind()
                    Dim selectedCity As String = DataBinder.Eval(e.Row.DataItem, "City").ToString()
                    ddlCities.Items.FindByValue(selectedCity).Selected = True
                End Using
            End Using
        End Using
    End If
End Sub

ویرایش ردیف GridView
هنگامی که دکمه Edit کلیک می شود، پردازنده رویداد GridView OnRowEditing فعال می شود.
EditIndex در GridView با RowIndex در GridView ردیف ویرایش شده به روز  و GridView دوباره با داده ها به روزرسانی می شود .
C #

protected void EditCustomer(object sender, GridViewEditEventArgs e)
{
    gvCustomers.EditIndex = e.NewEditIndex;
    this.BindGrid();
}

VB.Net

Protected Sub EditCustomer(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
    gvCustomers.EditIndex = e.NewEditIndex
    Me.BindGrid()
End Sub

لغو ویرایش
هنگامی که دکمه لغو کلیک می شود، پردازنده رویداد GridView OnRowCancelingEdit فعال می شود.
EditIndex به -1 تنظیم شده و GridView با داده ها دوباره پر شده است.
C #

protected void CancelEdit(object sender, GridViewCancelEditEventArgs e)
{
    gvCustomers.EditIndex = -1;
    this.BindGrid();
}

VB.Net

Protected Sub CancelEdit(ByVal sender As Object, ByVal e As GridViewCancelEditEventArgs)
    gvCustomers.EditIndex = -1
    Me.BindGrid()
End Sub

به روز رسانی خط GridView
هنگامی که دکمه به روز رسانی کلیک می شود، پردازنده رویداد OnRowUpdating GridView فعال می شود. مقدار CustomerId از خصوصیت DataKeyNames و مقدار شهر از DropDownList بدست می آید.
در نهایت، این مقادیر در جدول پایگاه داده به روز می شود و GridView با داده ها دوباره پر شده است.
C #

protected void UpdateCustomer(object sender, GridViewUpdateEventArgs e)
{
    string city = (gvCustomers.Rows[e.RowIndex].FindControl("ddlCities") as DropDownList).SelectedItem.Value;
    string customerId = gvCustomers.DataKeys[e.RowIndex].Value.ToString();
    string conString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
    using (SqlConnection con = new SqlConnection(conString))
    {
        string query = "UPDATE Customers SET City = @City WHERE CustomerId = @CustomerId";
        using (SqlCommand cmd = new SqlCommand(query, con))
        {
            cmd.Parameters.AddWithValue("@CustomerId", customerId);
            cmd.Parameters.AddWithValue("@City", city);
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
            Response.Redirect(Request.Url.AbsoluteUri);
        }
    }
}

VB.Net

Protected Sub UpdateCustomer(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
    Dim city As String = (TryCast(gvCustomers.Rows(e.RowIndex).FindControl("ddlCities"), DropDownList)).SelectedItem.Value
    Dim customerId As String = gvCustomers.DataKeys(e.RowIndex).Value.ToString()
    Dim conString As String = ConfigurationManager.ConnectionStrings("conString").ConnectionString
    Using con As SqlConnection = New SqlConnection(conString)
        Dim query As String = "UPDATE Customers SET City = @City WHERE CustomerId = @CustomerId"
        Using cmd As SqlCommand = New SqlCommand(query, con)
            cmd.Parameters.AddWithValue("@CustomerId", customerId)
            cmd.Parameters.AddWithValue("@City", city)
            con.Open()
            cmd.ExecuteNonQuery()
            con.Close()
            Response.Redirect(Request.Url.AbsoluteUri)
        End Using
    End Using
End Sub

 


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

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