功能齐全的DataGrid

//目前功能:编辑、排序、单选项、复选项、合并单元格、产生序列号、联动下拉框、删除、超连接、鼠标移动改变颜色、奇偶项颜色区分、排序、分页

1.html代码
<HTML>
    
<HEAD>
        
<title>DatagridTest</title>
        
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
        
<meta content="C#" name="CODE_LANGUAGE">
        
<meta content="JavaScript" name="vs_defaultClientScript">
        
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
        
<script language="javascript">
            
function fun_option(obj)
            
{
                document.Form1.hiduserid.value
=obj.value;
            }
            
            
function chkAll_true()
            
{
                
var chkall= document.all["chkAll"];
                
var chkother= document.getElementsByTagName("input");
                
for (var i=0;i<chkother.length;i++)
                
{
                    
if( chkother[i].type=='checkbox')
                    
{
                        
if(chkother[i].id.indexOf('chkExport')>-1)
                        
{
                            
if(chkall.checked==true)
                            
{
                                chkother[i].checked
=true;
                            }

                            
else
                            
{
                                chkother[i].checked
=false;
                            }

                        }

                    }

                }

            }

            
            
function Delete()
            
{
                
var  al = new Array();
                
var chkother= document.getElementsByTagName("input");
                
for(var i=0,j=0;i<chkother.length;i++)
                
{
                    
if( chkother[i].type =='checkbox')
                    
{
                        
if(chkother[i].id.indexOf('chkExport')>-1)
                        
{
                            
if(chkother[i].checked==true)
                            
{
                                al[j] 
=chkother[i].value;
                                j
++;
                            }

                        }

                    }

                }

                
if (al == "")
                
{
                    alert('You need to select a row 
in the list before selecting Delete."r"nPlease select a row and try again.');
                }

                
else if (window.confirm("Are you sure to delete all these?"))
                
{
                    
var deleteID='<%=btndelete.ClientID%>';
                    window.document.all(deleteID).click();
                }

                else { return false; }
               
            }

        
</script>
    
</HEAD>
    
<body>
        
<form id="Form1" method="post" runat="server">
            
<TABLE id="Table1" height="100%" cellSpacing="1" cellPadding="1" width="100%" border="1">
                
<tr>
                    
<td><asp:dropdownlist id="DropDownList1" runat="server" AutoPostBack="True"></asp:dropdownlist><asp:dropdownlist id="DropDownList2" runat="server" AutoPostBack="True"></asp:dropdownlist><asp:dropdownlist id="DropDownList3" runat="server"></asp:dropdownlist><asp:textbox id="TextBox1" runat="server"></asp:textbox><asp:checkbox id="CheckBox1" runat="server" Text="可见否"></asp:checkbox><asp:button id="Button1" runat="server" Text="保存"></asp:button><asp:button id="Button2" runat="server" Text="导出Excel"></asp:button></td>
                
</tr>
                
<tr height="30">
                    
<td><INPUT id="chkAll" onclick="chkAll_true()" type="checkbox">全选/取消<asp:button id="btndelete" runat="server" Text="删除"></asp:button></td>
                
</tr>
                
<TR vAlign="top">
                    
<TD width="100%" colSpan="5"><asp:datagrid id="DataGrid1" runat="server" OnDeleteCommand="Delete" ForeColor="Black" GridLines="None"
                            CellPadding
="2" BackColor="LightGoldenrodYellow" BorderWidth="1px" BorderColor="Tan" AllowSorting="True" AutoGenerateColumns="False"
                            DataKeyField
="UserID" OnUpdateCommand="Update" OnCancelCommand="Cancel" OnEditCommand="Edit" PageSize="5" AllowPaging="True">
                            
<FooterStyle BackColor="Tan"></FooterStyle>
                            
<SelectedItemStyle ForeColor="GhostWhite" BackColor="DarkSlateBlue"></SelectedItemStyle>
                            
<AlternatingItemStyle BackColor="PaleGoldenrod"></AlternatingItemStyle>
                            
<HeaderStyle Font-Bold="True" BackColor="Tan"></HeaderStyle>
                            
<Columns>
                                
<asp:TemplateColumn HeaderText="序号">
                                    
<HeaderStyle Width="10px"></HeaderStyle>
                                    
<ItemTemplate>
                                        
<INPUT id=radio onclick=fun_option(this) type=radio value='<%# DataBinder.Eval(Container.DataItem,"UserID") %>' name=radio>
                                    
</ItemTemplate>
                                    
<FooterTemplate>
                                    
</FooterTemplate>
                                
</asp:TemplateColumn>
                                
<asp:TemplateColumn HeaderText="序号">
                                    
<HeaderStyle Width="10px"></HeaderStyle>
                                    
<FooterTemplate>
                                    
</FooterTemplate>
                                
</asp:TemplateColumn>
                                
<asp:TemplateColumn>
                                    
<HeaderStyle Width="10px"></HeaderStyle>
                                    
<ItemTemplate>
                                        
<asp:CheckBox id="chkExport" Runat="server"></asp:CheckBox>
                                    
</ItemTemplate>
                                
</asp:TemplateColumn>
                                
<asp:BoundColumn DataField="UserID" SortExpression="UserID" ReadOnly="True" HeaderText="UserID">
                                    
<HeaderStyle Width="70px"></HeaderStyle>
                                
</asp:BoundColumn>
                                
<asp:TemplateColumn SortExpression="UserName" HeaderText="姓名">
                                    
<HeaderStyle Width="70px"></HeaderStyle>
                                    
<ItemTemplate>
                                        
<href='form1.aspx?id=<%# DataBinder.Eval(Container.DataItem,"UserID") %>&name=<%# DataBinder.Eval(Container.DataItem,"UserName"%>' target="_blank">
                                            
<%# DataBinder.Eval(Container.DataItem,"UserName"%>
                                        
</a>
                                    
</ItemTemplate>
                                    
<EditItemTemplate>
                                        
<asp:TextBox id=UserName Text='<%# DataBinder.Eval(Container.DataItem,"UserName") %>' Width="100%" Runat="server">
                                        
</asp:TextBox>
                                    
</EditItemTemplate>
                                
</asp:TemplateColumn>
                                
<asp:TemplateColumn SortExpression="province" HeaderText="省市">
                                    
<HeaderStyle Width="70px"></HeaderStyle>
                                    
<ItemTemplate>
                                        
<%# DataBinder.Eval(Container.DataItem,"province"%>
                                    
</ItemTemplate>
                                    
<EditItemTemplate>
                                        
<asp:DropDownList id="province" Width="100%" Runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlprovince_SelectedIndexChanged"></asp:DropDownList>
                                    
</EditItemTemplate>
                                
</asp:TemplateColumn>
                                
<asp:TemplateColumn SortExpression="city" HeaderText="县市">
                                    
<HeaderStyle Width="70px"></HeaderStyle>
                                    
<ItemTemplate>
                                        
<%# DataBinder.Eval(Container.DataItem,"city"%>
                                    
</ItemTemplate>
                                    
<EditItemTemplate>
                                        
<asp:DropDownList id="city" Runat="server" Width="100%" AutoPostBack="True" OnSelectedIndexChanged="ddlcity_SelectedIndexChanged"></asp:DropDownList>
                                    
</EditItemTemplate>
                                
</asp:TemplateColumn>
                                
<asp:TemplateColumn SortExpression="area" HeaderText="乡镇">
                                    
<HeaderStyle Width="70px"></HeaderStyle>
                                    
<ItemTemplate>
                                        
<%# DataBinder.Eval(Container.DataItem,"area"%>
                                    
</ItemTemplate>
                                    
<EditItemTemplate>
                                        
<asp:DropDownList id="area" Runat="server" Width="100%"></asp:DropDownList>
                                    
</EditItemTemplate>
                                
</asp:TemplateColumn>
                                
<asp:TemplateColumn SortExpression="Enabled" HeaderText="可见否">
                                    
<HeaderStyle Width="70px"></HeaderStyle>
                                    
<ItemTemplate>
                                        
<%# DataBinder.Eval(Container.DataItem,"Enabled"%>
                                    
</ItemTemplate>
                                    
<EditItemTemplate>
                                        
<asp:CheckBox id=chkenabled Runat="server" Checked='<%# DataBinder.Eval(Container.DataItem,"Enabled") %>'>
                                        
</asp:CheckBox>
                                    
</EditItemTemplate>
                                
</asp:TemplateColumn>
                                
<asp:EditCommandColumn ButtonType="PushButton" UpdateText="更新" HeaderText="编辑" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
                                
<asp:ButtonColumn Text="删除" ButtonType="PushButton" HeaderText="删除" CommandName="Delete"></asp:ButtonColumn>
                            
</Columns>
                            
<PagerStyle NextPageText="下一页" PrevPageText="上一页" HorizontalAlign="Right" ForeColor="DarkSlateBlue"
                                BackColor
="PaleGoldenrod" Mode="NumericPages"></PagerStyle>
                        
</asp:datagrid></TD>
                
</TR>
                
<tr height="30">
                    
<td></td>
                
</tr>
            
</TABLE>
            
<INPUT id="hiduserid" type="hidden" runat="server">
        
</form>
    
</body>
</HTML>
2.cs代码
using System.Data.SqlClient;
using System.Text;

public class DatagridTest : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.DataGrid DataGrid1;
        
protected System.Web.UI.HtmlControls.HtmlInputHidden hiduserid;
        
protected System.Web.UI.WebControls.Button btndelete;
        
protected System.Web.UI.WebControls.DropDownList DropDownList1;
        
protected System.Web.UI.WebControls.DropDownList DropDownList2;
        
protected System.Web.UI.WebControls.DropDownList DropDownList3;
        
protected System.Web.UI.WebControls.CheckBox CheckBox1;
        
protected System.Web.UI.WebControls.TextBox TextBox1;
        
protected System.Web.UI.WebControls.Button Button1;
        
protected System.Web.UI.WebControls.Button Button2;

        
private string constring="";        
        
        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
if(!Page.IsPostBack)
            
{
                ListProvince();
                ListCity();
                ListArea();

                btndelete.Attributes.Add(
"onclick","return Delete();");
                SortExpression
="";
                sort
="desc";
                DataBind();
            }
            
        }



        
DataBind DataBind
        
private void DataBind()
        
{
            
string sql="select a.UserID,a.UserName,b.province,c.city,d.area,a.Enabled,b.provinceID,c.cityID,d.areaID from testgrid a ";
            sql
+=" left join province b on a.provinceID=b.provinceID";
            sql
+=" left join city c on a.cityID=c.cityID";
            sql
+=" left join area d on a.areaID=d.areaID";
            DataSet ds
=GetDataSet(sql);
            dt
=ds.Tables[0];
            dt.DefaultView.Sort
="UserID asc";
            dt.AcceptChanges();
            
this.DataGrid1.DataSource=dt;
            
this.DataGrid1.DataBind();
        }

        
#endregion


        
Web Form Designer generated code Web Form Designer generated code
        
override protected void OnInit(EventArgs e)
        
{
            
//
            
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
            
//
            InitializeComponent();
            
base.OnInit(e);
            
this.DataGrid1.ItemDataBound+=new DataGridItemEventHandler(DataGrid1_ItemDataBound);
            
this.DataGrid1.SortCommand+=new DataGridSortCommandEventHandler(DataGrid1_SortCommand);
            
this.DataGrid1.ItemCreated+=new DataGridItemEventHandler(DataGrid1_ItemCreated);
            
this.DataGrid1.PageIndexChanged+=new DataGridPageChangedEventHandler(DataGrid1_PageIndexChanged);
            
this.btndelete.Click += new System.EventHandler(this.btndelete_Click);
            
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
            
this.DropDownList2.SelectedIndexChanged += new System.EventHandler(this.DropDownList2_SelectedIndexChanged);
            
this.Button1.Click += new System.EventHandler(this.Button1_Click);
            
this.Button2.Click += new System.EventHandler(this.Button2_Click);
        }

        
        
/// <summary>
        
/// Required method for Designer support - do not modify
        
/// the contents of this method with the code editor.
        
/// </summary>

        private void InitializeComponent()
        
{    
            
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
            
this.DropDownList2.SelectedIndexChanged += new System.EventHandler(this.DropDownList2_SelectedIndexChanged);
            
this.Button1.Click += new System.EventHandler(this.Button1_Click);
            
this.Button2.Click += new System.EventHandler(this.Button2_Click);
            
this.Load += new System.EventHandler(this.Page_Load);

        }

        
#endregion

        
GetDataSet GetDataSet
        
private DataSet GetDataSet(string sql)
        
{
            constring
=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
            SqlDataAdapter    sda 
=new SqlDataAdapter(sql,constring);
            DataSet ds
=new DataSet();
            sda.Fill(ds);
            
return ds;
        }

        
#endregion
        
        
DataGrid1_ItemDataBound DataGrid1_ItemDataBound
        
private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
        
{            
            e.Item.Cells[
1].Text=Convert.ToString(e.Item.ItemIndex+1);//产生序号
            if(e.Item.ItemType!=ListItemType.Header)
            
{
                
if(e.Item.ItemIndex%2==0)
                
{
                    e.Item.Attributes.Add( 
"onmouseout","this.style.backgroundColor='PaleGoldenrod'");
                }

                
else
                
{
                    e.Item.Attributes.Add( 
"onmouseout","this.style.backgroundColor='LightGoldenrodYellow'");
                }

              e.Item.Attributes.Add( 
"onmouseover","this.style.backgroundColor='#C1D2EE'");
            }

            
switch (e.Item.ItemType)
            
{
                
case ListItemType.Item:
                
case ListItemType.AlternatingItem:
                    e.Item.Attributes.Add(
"ondblclick","alert('"+e.Item.ItemIndex+"');");                    
                    
break;
                
case ListItemType.Header:
                    e.Item.Cells[
0].ColumnSpan=2;//合并单元格
                    e.Item.Cells[1].Visible=false;
                    
break;
                
case ListItemType.EditItem:
                    
for (int i=4; i < DataGrid1.Columns.Count-2; i++)//只调整被编辑的列
                    {
                      
if(e.Item.ItemType==ListItemType.EditItem)
                      
{
                           e.Item.Cells[i].Attributes.Add(
"Width""70px");
                      }

                    }

                    
string sqlprovince="select * from province";
                    DataSet dsprovince
=GetDataSet(sqlprovince);
                    
//一级
                    if(e.Item.ItemType==ListItemType.EditItem)
                    
{
                        DropDownList ddlprovince
=(DropDownList)e.Item.FindControl("province");
                        ddlprovince.DataSource
=dsprovince;
                        ddlprovince.DataTextField
="province";
                        ddlprovince.DataValueField
="provinceID";
                        ddlprovince.DataBind();
                        ddlprovince.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,
"provinceID"))).Selected=true;
                        
//二级
                        if(e.Item.ItemType==ListItemType.EditItem)
                        
{
                            
if(ddlprovince.SelectedIndex!=-1)
                            
{
                                
string sqlcity="select * from city where father='"+ddlprovince.SelectedValue+"'";
                                DropDownList ddlcity
=(DropDownList)e.Item.FindControl("city");
                                DataSet dscity
=GetDataSet(sqlcity);                
                                ddlcity.DataSource
=dscity;
                                ddlcity.DataTextField
="city";
                                ddlcity.DataValueField
="cityID";
                                ddlcity.DataBind();
                                ddlcity.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,
"cityID"))).Selected=true;
                                
//三级
                                if(e.Item.ItemType==ListItemType.EditItem)
                                
{
                                    
if(ddlcity.SelectedIndex!=-1)
                                    
{
                                        
string sqlarea="select * from area where father='"+ddlcity.SelectedValue+"'";
                                        DropDownList ddlarea
=(DropDownList)e.Item.FindControl("area");
                                        DataSet dsarea
=GetDataSet(sqlarea);                
                                        ddlarea.DataSource
=dsarea;
                                        ddlarea.DataTextField
="area";
                                        ddlarea.DataValueField
="areaID";
                                        ddlarea.DataBind();
                                        ddlarea.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,
"areaID"))).Selected=true;
                                    }

                                }

                            }

                        }

                    }

                    
break;
                
default:
                    
break;
            }
            
        }

        
#endregion

        
DataGrid1_SortCommand DataGrid1_SortCommand
        
private void DataGrid1_SortCommand(object source, DataGridSortCommandEventArgs e)
        
{
            
if(SortExpression==e.SortExpression.ToString())
            
{
                
if(sort=="asc")
                
{
                    sort
="desc";
                }

                
else
                
{
                    sort
="asc";
                }

            }

            
else
            
{
                
if(sort=="asc")
                
{
                    sort
="desc";
                }

                
else
                
{
                    sort
="asc";
                }

            }

            SortExpression
=e.SortExpression;
            dt.DefaultView.Sort
=e.SortExpression+" "+sort;
            DataGrid1.DataSource
=dt;
            DataGrid1.DataBind();
        }

        
#endregion

        
DataGrid1_ItemCreated DataGrid1_ItemCreated
        
private void DataGrid1_ItemCreated(object sender, DataGridItemEventArgs e)
        
{
            
for (int i=3; i < DataGrid1.Columns.Count-2; i++)//-2的意思是两个button列不用排序
            {
                
if (i == 0continue;
                
if(e.Item.ItemIndex==-1)
                
{
                    
if (DataGrid1.Columns[i].SortExpression == SortExpression)
                    
{
                        
try
                        
{
                            TableCell tableCell 
= e.Item.Cells[i];
                            Label label 
= new Label();
                            label.Font.Name 
= "webdings";
                            
if(sort=="asc")
                            
{
                                label.Text
="6";
                            }

                            
else
                            
{
                                label.Text
="5";
                            }

                            label.Width 
=20;
                            tableCell.Controls.Add(label);
                        }

                        
catch{}
                    }

                }

            }

            
foreach(DataGridItem di in this.DataGrid1.Items) 
             
{
                
if(di.ItemType==ListItemType.Item||di.ItemType==ListItemType.AlternatingItem) 
              

                   ((Button)di.Cells[
10].Controls[0]).Attributes.Add("onclick","return confirm('确认删除此项吗?');"); 
              }
 
            }

        }



        
#endregion

        
property property
        
private DataTable dt
        
{
            
get
            
{
                
if(ViewState["dt"]!=null)
                
{
                    
return (DataTable)ViewState["dt"];
                }

                
else
                
{
                    
return null;
                }

            }

            
set
            
{
                ViewState[
"dt"]=value;
            }

        }

        
private string SortExpression
        
{
            
get
            
{
                
if(ViewState["SortExpression"]!=null && ViewState["SortExpression"].ToString()!=string.Empty)
                
{
                    
return ViewState["SortExpression"].ToString();
                }

                
else
                
{
                    
return "";
                }

            }

            
set
            
{
                ViewState[
"SortExpression"]=value;
            }

        }

        
private string sort
        
{
            
get
            
{
                
if(ViewState["sort"]!=null && ViewState["sort"].ToString()!=string.Empty)
                
{
                    
return ViewState["sort"].ToString();
                }

                
else
                
{
                    
return "";
                }

            }

            
set
            
{
                ViewState[
"sort"]=value;
            }

        }

        
#endregion

        
Edit Edit
        
protected void Edit(object sender,DataGridCommandEventArgs e)
        
{
            
this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
            DataBind();
        }

        
#endregion

        
Cancel Cancel
        
protected void Cancel(object sender,DataGridCommandEventArgs e)
        
{
            
this.DataGrid1.EditItemIndex=-1;
            DataBind();
        }

        
#endregion

        
Update Update
        
protected void Update(object sender,DataGridCommandEventArgs e)
        
{
            
if(e.Item.ItemType==ListItemType.EditItem)
            
{
                SqlConnection conn
=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
                SqlCommand comm
=new SqlCommand("update testgrid set UserName=@UserName,provinceID=@province,cityID=@city,areaID=@area,Enabled=@Enabled where UserID=@UserID",conn);
                SqlParameter parm1
=new SqlParameter("@UserName",SqlDbType.NVarChar,50);
                parm1.Value
=((TextBox)e.Item.FindControl("UserName")).Text;

                SqlParameter parm2
=new SqlParameter("@province",SqlDbType.NVarChar,50);
                parm2.Value
=((DropDownList)e.Item.FindControl("province")).SelectedValue;

                SqlParameter parm3
=new SqlParameter("@city",SqlDbType.NVarChar,50);
                parm3.Value
=((DropDownList)e.Item.FindControl("city")).SelectedValue;    
            
                SqlParameter parm4
=new SqlParameter("@area",SqlDbType.NVarChar,50);
                parm4.Value
=((DropDownList)e.Item.FindControl("area")).SelectedValue;

                SqlParameter parm5
=new SqlParameter("@Enabled",SqlDbType.Bit);
                parm5.Value
=((CheckBox)e.Item.FindControl("chkenabled")).Checked;


                SqlParameter parm6
=new SqlParameter("@UserID",SqlDbType.Int);
                parm6.Value
=this.DataGrid1.DataKeys[e.Item.ItemIndex];

                comm.Parameters.Add(parm1);
                comm.Parameters.Add(parm2);
                comm.Parameters.Add(parm3);
                comm.Parameters.Add(parm4);
                comm.Parameters.Add(parm5);
                comm.Parameters.Add(parm6);
                conn.Open();
                comm.ExecuteNonQuery();
                conn.Close();
                
this.DataGrid1.EditItemIndex=-1;
                DataBind();
            }

        }

        
#endregion

        
Delete event Delete event
        
protected void Delete(object sender,DataGridCommandEventArgs e)
        
{
            delete(
this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString());
        }

        
#endregion

        
ddlprovince_SelectedIndexChanged ddlprovince_SelectedIndexChanged
        
public void ddlprovince_SelectedIndexChanged(object sender, EventArgs e)
        
{
            DropDownList ddlprovince 
= sender as DropDownList;
            
if(ddlprovince.SelectedIndex!=-1)
            
{
                DropDownList ddlcity 
= ((Control)(((Control)sender)).Parent).FindControl("city"as DropDownList;
                
string sqlcity="select * from city where father='"+ddlprovince.SelectedValue+"'";
                DataSet dscity
=GetDataSet(sqlcity);
                ddlcity.DataSource
=dscity;
                ddlcity.DataTextField
="city";
                ddlcity.DataValueField
="cityID";
                ddlcity.DataBind();
            }

        }

        
#endregion

        
ddlcity_SelectedIndexChanged ddlcity_SelectedIndexChanged
        
public void ddlcity_SelectedIndexChanged(object sender, EventArgs e)
        
{
            DropDownList ddlcity 
= sender as DropDownList;
            
if(ddlcity.SelectedIndex!=-1)
            
{
                DropDownList ddlarea 
= ((Control)(((Control)sender)).Parent).FindControl("city"as DropDownList;
                
string sqlarea="select * from area where father='"+ddlcity.SelectedValue+"'";
                DataSet dsarea
=GetDataSet(sqlarea);
                ddlarea.DataSource
=dsarea;
                ddlarea.DataTextField
="area";
                ddlarea.DataValueField
="areaID";
                ddlarea.DataBind();
            }

        }

        
#endregion

        
btndelete_Click btndelete_Click
        
private void btndelete_Click(object sender, System.EventArgs e)
        
{
            StringBuilder s
=new StringBuilder();
            
foreach(DataGridItem di in DataGrid1.Items) 
            

                 
if(((CheckBox)(di.FindControl("chkExport"))).Checked==true
                 

                  s.Append(
",").Append(DataGrid1.DataKeys[di.ItemIndex].ToString());
                 }
 
            }
 
            
if(s.ToString().StartsWith(",")==true)
            
{
                delete(s.ToString().Substring(
1,s.ToString().Length-1));
            }

        }

        
#endregion

        
delete delete
        
private void delete(string id)
        
{
            SqlConnection conn
=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
            
string sql=@"declare @sql nvarchar(400)
                        set @sql = 'delete from testgrid where UserID in('+@UserID+')'
                        exec( @sql)
";
            SqlCommand comm
=new SqlCommand(sql,conn);
            SqlParameter parm1
=new SqlParameter("@UserID",SqlDbType.VarChar,200);
            parm1.Value
=id;
            comm.Parameters.Add(parm1);
            conn.Open();
            comm.ExecuteNonQuery();
            conn.Close();
            DataBind();
        }

        
#endregion

        
ListProvince ListProvince
        
private void ListProvince()
        
{
            
string sql="select * from province";
            DataSet ds
=GetDataSet(sql);
            DropDownList1.DataSource
=ds;
            DropDownList1.DataTextField
="province";
            DropDownList1.DataValueField
="provinceID";
            DropDownList1.DataBind();
        }

        
#endregion

        
ListCity ListCity
        
private void ListCity()
        
{
            
if(DropDownList1.SelectedIndex!=-1)
            
{
                
string sql="select * from city where father='"+DropDownList1.SelectedValue+"'";
                DataSet ds
=GetDataSet(sql);
                DropDownList2.DataSource
=ds;
                DropDownList2.DataTextField
="city";
                DropDownList2.DataValueField
="cityID";
                DropDownList2.DataBind();
            }

        }

        
#endregion

        
ListArea ListArea
        
private void ListArea()
        
{
            
if(DropDownList2.SelectedIndex!=-1)
            
{
                
string sql="select * from area where father='"+DropDownList2.SelectedValue+"'";
                DataSet ds
=GetDataSet(sql);            
                DropDownList3.DataSource
=ds;
                DropDownList3.DataTextField
="area";
                DropDownList3.DataValueField
="areaID";
                DropDownList3.DataBind();
            }

        }

        
#endregion

        
save save
        
private void Button1_Click(object sender, System.EventArgs e)
        
{
            SqlConnection conn
=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
            SqlCommand comm
=new SqlCommand("insert into testgrid (UserName,provinceID,cityID,areaID,Enabled) values(@UserName,@provinceID,@cityID,@areaID,@Enabled)",conn);
            SqlParameter parm1
=new SqlParameter("@UserName",SqlDbType.NVarChar,50);
            parm1.Value
=this.TextBox1.Text;

            SqlParameter parm2
=new SqlParameter("@provinceID",SqlDbType.NVarChar,50);
            parm2.Value
=this.DropDownList1.SelectedValue;

            SqlParameter parm3
=new SqlParameter("@cityID",SqlDbType.NVarChar,50);
            parm3.Value
=this.DropDownList2.SelectedValue;    
            
            SqlParameter parm4
=new SqlParameter("@areaID",SqlDbType.NVarChar,50);
            parm4.Value
=this.DropDownList3.SelectedValue;

            SqlParameter parm5
=new SqlParameter("@Enabled",SqlDbType.Bit);
            parm5.Value
=this.CheckBox1.Checked;

            comm.Parameters.Add(parm1);
            comm.Parameters.Add(parm2);
            comm.Parameters.Add(parm3);
            comm.Parameters.Add(parm4);
            comm.Parameters.Add(parm5);
            conn.Open();
            comm.ExecuteNonQuery();
            conn.Close();
            DataBind();
        }

        
#endregion

        
private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
        
{
            ListCity();
        }


        
private void DropDownList2_SelectedIndexChanged(object sender, System.EventArgs e)
        
{
            ListArea();
        }


        
private void Button2_Click(object sender, System.EventArgs e)
        
{
            ToExcel(
this.DataGrid1,"meng");
        }


        
ToExcel ToExcel
        
public static void ToExcel(System.Web.UI.Control ctl,string FileName)
        
{
            HttpContext.Current.Response.Charset 
="UTF-8";
            HttpContext.Current.Response.ContentEncoding 
=System.Text.Encoding.Default;
            HttpContext.Current.Response.ContentType 
="application/ms-excel";
            HttpContext.Current.Response.AppendHeader(
"Content-Disposition","attachment;filename="+""+FileName+".xls");
            ctl.Page.EnableViewState 
=false;
            System.IO.StringWriter  tw 
= new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter hw 
= new System.Web.UI.HtmlTextWriter(tw);
            ctl.RenderControl(hw);
            HttpContext.Current.Response.Write(tw.ToString());
            HttpContext.Current.Response.End();
        }
        
        
#endregion
        
        
private void DataGrid1_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
        
{
            
this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
            DataBind();
        }

    }

3. 数据库教本(或下载真实数据/Files/singlepine/area.rar)
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TestGrid]'and OBJECTPROPERTY(id, N'IsUserTable'= 1)
drop table [dbo].[TestGrid]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[province]'and OBJECTPROPERTY(id, N'IsUserTable'= 1)
drop table [dbo].[province]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[city]'and OBJECTPROPERTY(id, N'IsUserTable'= 1)
drop table [dbo].[city]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[area]'and OBJECTPROPERTY(id, N'IsUserTable'= 1)
drop table [dbo].[area]
GO

CREATE TABLE [dbo].[TestGrid] (
    
[UserID] [int] IDENTITY (11NOT NULL ,
    
[UserName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    
[provinceID] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    
[cityID] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    
[areaID] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    
[Enabled] [bit] NULL 
ON [PRIMARY]
GO

CREATE TABLE [dbo].[province] (
    
[id] [int] NOT NULL ,
    
[provinceID] [nvarchar] (6) COLLATE Chinese_PRC_CI_AS NULL ,
    
[province] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL 
ON [PRIMARY]
GO

CREATE TABLE [dbo].[city] (
    
[id] [int] NOT NULL ,
    
[cityID] [nvarchar] (6) COLLATE Chinese_PRC_CI_AS NULL ,
    
[city] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    
[father] [nvarchar] (6) COLLATE Chinese_PRC_CI_AS NULL 
ON [PRIMARY]
GO

CREATE TABLE [dbo].[area] (
    
[id] [int] NOT NULL ,
    
[areaID] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    
[area] [nvarchar] (60) COLLATE Chinese_PRC_CI_AS NULL ,
    
[father] [nvarchar] (6) COLLATE Chinese_PRC_CI_AS NULL 
ON [PRIMARY]
GO
4.源代码下载/Files/singlepine/datagrid.rar
posted @ 2008-08-29 14:41  gllg  阅读(273)  评论(0编辑  收藏  举报