C#之Gridview&dropdownlist控件级联应用

<%@ Page Title="" Language="C#" MasterPageFile="MasterPageSys.master" AutoEventWireup="true" CodeFile="sysCustomCAdd.aspx.cs" Inherits="sysCustomCAdd" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <div class="container-fluid">              
        <ol class="breadcrumb">
          <li class="active">您的位置:</li>
          <li><a href="sysCustomInfo.aspx">客户信息编辑</a></li>
          <li><a href="sysCustomCAdd.aspx">客户收货地址编辑</a></li>          
        </ol>
    </div>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
    <div class="container-fluid">
        <div class="col-md-1"></div>               
        <div class="col-md-10" style="font-size: small; text-align: center;"> 
          <div class="bg-primary">客户收货地址编辑</div>
        <!--添加控件“GridView”,并设置属性 起始--> 
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"  DataKeyNames="cuRecAddID"
                AllowPaging="True"  EmptyDataText="没有数据记录!!"
                OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" 
                OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit" 
                OnPageIndexChanging="GridView1_PageIndexChanging"
                OnRowDataBound="GridView1_RowDataBound"                
                CssClass= "table table-striped table-bordered table-condensed" >
                <Columns>                    
                    <asp:BoundField DataField="cuRecAddID" HeaderText="序号" ReadOnly="True" SortExpression="cuRecAddID" InsertVisible="False" HeaderStyle-Width="60" ControlStyle-Width="60" >                        
                    </asp:BoundField>                    
                    <asp:TemplateField HeaderText="客户简称" HeaderStyle-Width="100" ControlStyle-Width="100">
                        <ItemTemplate>
                            <asp:HiddenField ID="hfID" runat="server" Value='<%# Eval("cuRecAddID") %>' />
                        <%# Eval("customName")%>                            
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:HiddenField  Value='<%#Eval("cuRecAddID") %>' ID="hfID2" runat=server/>
                            <asp:HiddenField ID="hfcustomID" runat="server" Value='<%# Eval("customID") %>' />
                            <asp:DropDownList ID="ddlcustomID" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlcustomID_SelectedIndexChanged" >                            
                            </asp:DropDownList>
                        </EditItemTemplate>
                    </asp:TemplateField>                                     
                    
                    <asp:TemplateField HeaderText="收货人" HeaderStyle-Width="100" ControlStyle-Width="100">
                        <ItemTemplate>
                            <asp:HiddenField ID="hfID3" runat="server" Value='<%# Eval("cuRecAddID") %>' />
                        <%# Eval("cuConName")%>                            
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:HiddenField  Value='<%#Eval("cuRecAddID") %>' ID="hfID4" runat=server/>
                            <asp:HiddenField ID="hfcuRecAddID" runat="server" Value='<%# Eval("customID") %>' />
                            <asp:DropDownList ID="ddlcuContactID" runat="server" >                            
                            </asp:DropDownList>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="cuRecAdd" HeaderText="收货地址" SortExpression="cuRecAdd" HeaderStyle-Width="300" ControlStyle-Width="300" >                        
                    </asp:BoundField>                    
                    <asp:BoundField DataField="cuRecRemarks" HeaderText="备注" SortExpression="cuRecRemarks" HeaderStyle-Width="200" ControlStyle-Width="200" >                        
                    </asp:BoundField>
                    <asp:CommandField HeaderText="删除" ShowDeleteButton="True" HeaderStyle-Width="40" HeaderStyle-HorizontalAlign="Center" ControlStyle-Width="40" >                        
                    </asp:CommandField>
                    <asp:CommandField HeaderText="编辑" ShowEditButton="True" HeaderStyle-Width="60" HeaderStyle-HorizontalAlign="Center" ControlStyle-Width="60" >                        
                    </asp:CommandField>                    
                </Columns>
                <EditRowStyle BackColor="#999999" />
                <FooterStyle BackColor="#5D7B9D" ForeColor="White" Font-Bold="True" />
                <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                <SortedAscendingCellStyle BackColor="#E9E7E2" />
                <SortedAscendingHeaderStyle BackColor="#506C8C" />
                <SortedDescendingCellStyle BackColor="#FFFDF8" />
                <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
            </asp:GridView>            
        <!--添加控件“GridView”,并设置属性 结束-->
        </div>
        <div class="col-md-1"></div>
        </div>
    <div class="container-fluid" style="text-align: center; margin-top: 20px;">
        <asp:Button ID="BtnNewCustom" runat="server" Text="新增地址" PostBackUrl="sysCustomNew.aspx" />        
        <asp:Button ID="BtnEditCAdd" runat="server" Text="编辑联系人" PostBackUrl="~/systemManage/sysCustomCName.aspx" />        
    </div>
</asp:Content>

后台代码

using System;
using System.Collections.Generic;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class sysCustomCAdd : System.Web.UI.Page
{
    int reValue;//用于保存返回值。返回值为-1(存在),0(失败),1(成功),2(用户名不存在)
    protected void Page_Load(object sender, EventArgs e)
    {
        GridView1.Attributes.Add("style", "word-break:break-all;word-wrap:break-word");//自动换行
        if (!IsPostBack)
        {
            GridviewBind();
        }
    }
    public void GridviewBind()
    {
        //DDLcustomID.Items.Clear();
        //实例化公共类的对象
        DB db = new DB();
        //定义SQL语句
        string sqlstr = "SELECT BaCuRecAdd.cuRecAddID,BaCuRecAdd.customID,BaCuRecAdd.cuContactID,BaCuRecAdd.cuRecAdd,BaCuRecAdd.cuRecRemarks,BaCuContact.cuConName,BaCustom.customName FROM BaCuRecAdd LEFT OUTER JOIN BaCuContact ON BaCuRecAdd.cuContactID = BaCuContact.cuContactID LEFT OUTER JOIN BaCustom ON BaCuRecAdd.customID = BaCustom.customID ORDER BY BaCuRecAdd.customID ";
        //实例化数据集DataTable用于存储查询结果
        DataTable dt = db.reDt(sqlstr);
        //绑定DropDownListt控件
        GridView1.DataSource = dt;//设置数据源,用于填充控件中的项的值列表        
        GridView1.DataBind();//将控件及其所有子控件绑定到指定的数据源

    }

    //分页 选择、编辑、更新功能
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        //分页功能:设置相关属性。在源视窗中手动添加 AllowPaging = "True"   PageSize = "10"
        GridView1.PageIndex = e.NewPageIndex;
        GridviewBind();
    }
    protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        GridView1.SelectedIndex = e.NewSelectedIndex; //实现选择功能
    }
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;  //实现编辑功能
        GridviewBind();

    }
    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        GridView1.EditIndex = -1;//实现取消编辑功能
        GridviewBind();
    }

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        DB db = new DB();
        string cuRecAddID = ((HiddenField)GridView1.Rows[e.RowIndex].FindControl("hfID2")).Value;
        string customID = ((DropDownList)GridView1.Rows[e.RowIndex].FindControl("ddlcustomID")).SelectedValue;
        string cuContactID = ((DropDownList)GridView1.Rows[e.RowIndex].FindControl("ddlcuContactID")).SelectedValue;
        string cuRecAdd = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString();        
        string cuRecRemarks = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString();
        string cmdStr = "UPDATE BaCuRecAdd SET customID='" + customID + "',cuContactID = '" + cuContactID + "', cuRecAdd = '" + cuRecAdd + "', cuRecRemarks = '" + cuRecRemarks + "' WHERE cuRecAddID='" + cuRecAddID + "'";
        reValue = db.sqlEx(cmdStr);
        if (reValue == 1)
        {

            GridView1.EditIndex = -1;
            GridviewBind();
        }
        else if (reValue == 0)
        {
            Response.Write("<script>alert('更新送货地址失败!!');</script>");
        }

    }
    //删除功能
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        DB db = new DB();
        string cmdStr = "delete from BaCuRecAdd where cuRecAddID='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
        reValue = db.sqlEx(cmdStr);
        if (reValue == 1)
        {

            GridView1.EditIndex = -1;
            GridviewBind();
        }
        else if (reValue == 0)
        {
            Response.Write("<script>alert('删除操作失败!!');</script>");

        }

    }
    /// <summary>
    /// 行绑定时的处理,其中包括DropDownList的可选项绑定,和选中当前可选项
    /// </summary>
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow && ((e.Row.RowState & DataControlRowState.Edit) > 0))
        {
            //---------绑定父DropDownList数据
            DropDownList ddlcustomID = (DropDownList)e.Row.FindControl("ddlcustomID") as DropDownList;            
            DB db = new DB();
            string sqlddlcustomID = "SELECT [customID], [customName] FROM [BaCustom] ";            
            DataTable dtcustomID = db.reDt(sqlddlcustomID);            
            //绑定DropDownListt控件
            ddlcustomID.DataSource = dtcustomID;
            ddlcustomID.DataTextField = "customName";
            ddlcustomID.DataValueField = "customID";
            ddlcustomID.DataBind();
            // 通过HiddenField选中现在的 DropDownList的值
            ddlcustomID.SelectedValue = ((HiddenField)e.Row.FindControl("hfcustomID")).Value;
            //----------绑定父DropDownList数据
            DropDownList ddlcuContactID = (DropDownList)e.Row.FindControl("ddlcuContactID") as DropDownList;
            string strcoustomID = ddlcustomID.SelectedItem.Value;
            string sqlddlcuContactID = "SELECT [cuContactID],[customID],[cuConName] FROM [BaCuContact] where customID='" + strcoustomID + "'";
            DataTable dtcuContactID = db.reDt(sqlddlcuContactID);
            ddlcuContactID.DataSource = dtcuContactID;
            ddlcuContactID.DataTextField = "cuConName";
            ddlcuContactID.DataValueField = "cuContactID";            
            ddlcuContactID.DataBind();
            // 通过HiddenField选中现在的 DropDownList的值
            ddlcuContactID.SelectedValue = ((HiddenField)e.Row.FindControl("hfcuRecAddID")).Value;
        }
        /// 删除操作的提示
        //如果是绑定数据行 
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
            {
                ((LinkButton)e.Row.Cells[5].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:" + e.Row.Cells[2].Text + "吗?')");
            }
        }
        /// 鼠标移到GridView某一行时改变该行的背景色        
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //鼠标经过时,行背景色变 
            e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#E6F5FA'");
            //鼠标移出时,行背景色变 
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#FFFFFF'");

        }

    }
//    
    // <summary>

    /// 编辑时子级DDL ddlcuContactID 随着父级DDL ddlcustomID 联动    

    /// <param name="sender"></param>

    /// <param name="e"></param>

    protected void ddlcustomID_SelectedIndexChanged(object sender, EventArgs e)

    {
        
        GridViewRow row = (GridViewRow)((sender) as Control).NamingContainer;
        DropDownList ddlcustomID = (sender) as DropDownList;
        int ddlcustomID_selected = Convert.ToInt32(ddlcustomID.SelectedValue);
        DropDownList ddlcuContactID = row.FindControl("ddlcuContactID") as DropDownList;
        //GetChildren(ddlcuContactID, ddlcustomID_selected);
        DB db = new DB();
        string sql = "SELECT [cuContactID],[customID],[cuConName] FROM [BaCuContact] where customID=" + ddlcustomID_selected + "";
        DataTable dt = db.reDt(sql);
        ddlcuContactID.DataTextField = "cuConName";
        ddlcuContactID.DataValueField = "cuContactID";
        ddlcuContactID.DataSource = dt;
        ddlcuContactID.DataBind();
    }
    
}

猜你喜欢

转载自blog.csdn.net/li97203/article/details/81479345