`
ch_kexin
  • 浏览: 903098 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

DataGrid和DropDownList的一些配合以及使用css定制DataGrid

    博客分类:
  • .NET
阅读更多
引用

有的时候我们需要
(1)在编辑的时候用下拉框选择,并且默认为数据库的内容
(2)使用下拉框过滤数据
(3)使用css统一定制DataGrid
下面给出代码:

数据结构:
表dep:depid(标识主键),depname(学院名字)
表stu:stuid(标识主键),stuname(学生名字),studepid(学院id=表dep.depid)
前台:
<%@ Page language="c#" Codebehind="WebForm28.aspx.cs" AutoEventWireup="false" Inherits="csdn.WebForm28" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 <HEAD>
  <title>WebForm28</title>
  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  <meta name="CODE_LANGUAGE" Content="C#">
  <meta name="vs_defaultClientScript" content="JavaScript">
  <link href="css.css" rel="stylesheet" type="text/css">
  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
 </HEAD>
 <body>
  <form id="Form1" method="post" runat="server">
   <asp:DropDownList id="DropDownList1" runat="server" AutoPostBack="True"></asp:DropDownList>
   <asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" CellSpacing="1" BorderWidth="0px"
    CellPadding="5" CssClass="border" OnEditCommand="edit" OnCancelCommand="cancel" OnUpdateCommand="update"
    DataKeyField="stuid">
    <ItemStyle CssClass="item"></ItemStyle>
    <HeaderStyle CssClass="header"></HeaderStyle>
    <Columns>
     <asp:TemplateColumn HeaderText="姓名">
      <ItemTemplate>
       <%# DataBinder.Eval(Container.DataItem,"stuname") %>
      </ItemTemplate>
      <EditItemTemplate>
       <asp:TextBox id="name" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"stuname") %>' Width="88px">
       </asp:TextBox>
      </EditItemTemplate>
     </asp:TemplateColumn>
     <asp:TemplateColumn HeaderText="学院">
      <ItemTemplate>
       <%# DataBinder.Eval(Container.DataItem,"depname") %>
      </ItemTemplate>
      <EditItemTemplate>
       <asp:DropDownList ID="dep" Runat="server"></asp:DropDownList>
      </EditItemTemplate>
     </asp:TemplateColumn>
     <asp:EditCommandColumn ButtonType="PushButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
    </Columns>
   </asp:DataGrid>
  </form>
 </body>
</HTML>


后台:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace csdn
{
 /// <summary>
 /// WebForm28 的摘要说明。
 /// </summary>
 public class WebForm28 : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.DropDownList DropDownList1;
  protected System.Web.UI.WebControls.DataGrid DataGrid1;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   if(!IsPostBack)
   {
    SetBind();
    SetBind2();
   }
  }

  protected void SetBind()
  {

   SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
   SqlDataAdapter da=new SqlDataAdapter("select * from stu,dep where stu.studepid=dep.depid",conn);
   DataSet ds=new DataSet();
   da.Fill(ds,"table1");
   this.DataGrid1.DataSource=ds.Tables["table1"];
   this.DataGrid1.DataBind();
   
  }

  protected void SetBind2()
  {

   SqlConnection conn2=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
   SqlDataAdapter da2=new SqlDataAdapter("select * from dep",conn2);
   DataSet ds2=new DataSet();
   da2.Fill(ds2,"table1");
   this.DropDownList1.DataSource=ds2.Tables["table1"];
   this.DropDownList1.DataTextField="depname";
   this.DropDownList1.DataValueField="depid";
   this.DropDownList1.DataBind();
   this.DropDownList1.Items.Insert(0,new ListItem("请选择",""));
   
  }

  protected void SetBind3()
  {
   string s=this.DropDownList1.SelectedValue;
   SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
   SqlCommand comm=new SqlCommand();
   comm.Connection=conn;
   if(s!="")
   {
    comm.CommandText="select * from stu,dep where stu.studepid=dep.depid and depid=@depid";
    SqlParameter parm1=new SqlParameter("@depid",SqlDbType.Int);
    parm1.Value=s;
    comm.Parameters.Add(parm1);
   }
   else
    comm.CommandText="select * from stu,dep where stu.studepid=dep.depid";
   SqlDataAdapter da=new SqlDataAdapter();
   da.SelectCommand=comm;
   DataSet ds=new DataSet();
   da.Fill(ds,"table1");
   this.DataGrid1.DataSource=ds.Tables["table1"];
   this.DataGrid1.DataBind();
   
  }
  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
   this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
   SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
   SqlDataAdapter da=new SqlDataAdapter("select * from dep",conn);
   DataSet ds=new DataSet();
   da.Fill(ds,"table1");
   if(e.Item.ItemType==ListItemType.EditItem)
   {
    DropDownList ddl=(DropDownList)e.Item.FindControl("dep");
    ddl.DataSource=ds.Tables["table1"];
    ddl.DataTextField="depname";
    ddl.DataValueField="depid";
    ddl.DataBind();
    ddl.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"depid"))).Selected=true; //选择数据库内的作为默认
   }
  }

  protected void edit(object sender,DataGridCommandEventArgs e)
  {
   this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
   if(this.DropDownList1.SelectedValue=="")
    SetBind();
   else
    SetBind3();
  }

  protected void cancel(object sender,DataGridCommandEventArgs e)
  {
   this.DataGrid1.EditItemIndex=-1;
   if(this.DropDownList1.SelectedValue=="")
    SetBind();
   else
    SetBind3();
  }

  protected void update(object sender,DataGridCommandEventArgs e)
  {
   if(e.Item.ItemType==ListItemType.EditItem)//只有在编辑按下以后才能提交
   {
    SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
    SqlCommand comm=new SqlCommand("update stu set stuname=@name,studepid=@depid where stuid=@id",conn);
    SqlParameter parm1=new SqlParameter("@name",SqlDbType.NVarChar,50);
    parm1.Value=((TextBox)e.Item.FindControl("name")).Text;
    SqlParameter parm2=new SqlParameter("@depid",SqlDbType.Int);
    parm2.Value=((DropDownList)e.Item.FindControl("dep")).SelectedValue;
    SqlParameter parm3=new SqlParameter("@id",SqlDbType.Int);
    parm3.Value=this.DataGrid1.DataKeys[e.Item.ItemIndex];
    comm.Parameters.Add(parm1);
    comm.Parameters.Add(parm2);
    comm.Parameters.Add(parm3);
    conn.Open();
    comm.ExecuteNonQuery();
    conn.Close();
    this.DataGrid1.EditItemIndex=-1;
    if(this.DropDownList1.SelectedValue=="")
     SetBind();
    else
     SetBind3();//如果选择过滤则使用SetBind3()
   }
  }

  private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
  {
   SetBind3();
  }
 }
}
css:
.border {
 background-color: #00496C;
}
.header {
 font-family: "宋体", sans-serif;
 font-size: 10pt;
 font-weight: bold;
 color: #FFFFFF;
 background-color: #0080C0;
 text-align: center;
}
.item {
 font-family: "宋体", sans-serif;
 font-size: 9pt;
 font-weight: normal;
 color: #0080C0;
 background-color: #FFFFFF;
 text-align: center;
}


代码比较简单,下面简单说明一下:
(1)SetBind()是基本的绑定;SetBind2()是绑定外面的那个DropDownList;SetBind3()是在下拉框选择了以后过滤后的DataGrid的绑定
(2)这里使用Css来实现表格边框是利用CellSpacing,所以这个数值就是边框的宽度,在表格边框的css中使用background-color来描述边框的颜色。
分享到:
评论

相关推荐

    [视频]ASP.NET-DataGrid高级技巧

    6. **样式和外观定制**:展示如何通过CSS样式和皮肤文件来改变DataGrid的外观,使其更好地融入网站设计。 7. **数据操作的异常处理**:讨论在处理用户输入或数据库操作时可能出现的问题,以及如何优雅地处理这些...

    asp.net 自定义DropDownList(CustomDropDownList)(上一个有点bug)

    不好意思,压缩包中的__doPostBack事件绑定有误,现在改正了,并且加入了ie不支持max-height css属性的纠正,并且前一压缩包没把用到的数据源DB.xml包含进去。 非常抱歉,但是好像不能覆盖原来的文件,故重发一个...

    flex 4.6Css

    使用方法: 引入: add silvergreen-2.1.swc to libs 使用(SWC方案): 在IDE(如:Flash Builder)里面,增加一个编译参数: -theme ../libs/silvergreen-2.0.swc 使用(fx:Style方案): 1、copy ...

    asp.net专家疑难解答200问源码

    37.如何使用CSS文件定义控件的样式 38.如何启用和禁用ViewState保存状态信息的功能 39.如何应用IsPostBack控制页面的加载 41.如何使用Trace对象进行跟踪调试(页面级) 42.如何使用#Include语法将文件添加到页面 ...

    ASP.NET中访问DataGrid中所有控件值的方法

    DataGrid控件中的每一行通常是一个DataGridItem,而每个单元格可能包含不同的控件,比如TextBox、CheckBox、CheckBoxList、RadioButtonList和DropDownList等。这些子控件都可能包含需要访问的数据。 在给定的文件...

    asp.net专家疑难解答200问

    如何实现DataGrid控件中DropDownList控件的联动 131.DataGrid控件使用综合举例 第7章 数据绑定技术 132.如何单值绑定到控件的属性 133.如何将DataTable绑定到DataGrid Web控件 134.如何将...

    ASP.Net项目要求

    15. **DropDownList和CSS**:此控件用于下拉选择,配合CSS可以实现样式定制,提升用户界面的美观度。 16. **代码编写**:遵循详细设计并遵守编码规范,如使用帕斯卡、匈牙利、骆驼命名法,是保证代码质量的关键。 ...

    asp.net 关于自行车的购物网站

    在这个购物网站中,可能会用到DataGrid来展示商品列表,使用TextBox和DropDownList接收用户输入,Button控件则用于触发购买操作。 4. **数据访问层(DAL)** 为了存储和检索商品信息,项目很可能使用了数据库。ASP...

    ASP.NET程序中常用的三十三种代码

    在DataGrid或GridView的行被单击时,可以通过修改CSS样式来改变行的背景色和文字颜色,增强界面的视觉效果。 以上实践不仅体现了ASP.NET框架下Web开发的基本技巧,还展示了如何利用C#与JavaScript结合,实现更高级...

    Kendo UI for jQuery 2019.3.1023

    至于压缩包中的"**kendoui.for.jquery.2019.3.1023.commercial.msi**"文件,这通常是一个Windows安装程序,用于在开发环境中安装Kendo UI for jQuery的完整库,包括必要的CSS样式、JavaScript文件以及示例和文档。...

    【精品】15春福师《面向web应用程序设计》在线作业两套[定义].pdf

    在《面向Web应用程序设计》这门课程中,...以上是Web应用程序设计中的关键知识点,涵盖了控件使用、数据管理、状态维护、验证机制以及用户交互等多个方面,这些都是构建高效、用户友好的Web应用所必需掌握的基础知识。

    新闻发布网站报告.doc

    **ADO.NET连接数据库**:ADO.NET提供了与SQL Server交互的接口,包括使用Connection对象建立连接,Command对象执行SQL命令,以及使用DataAdapter和DataSet进行数据填充和更新。\n\n5. **服务器控件**:TextBox、...

    计算机网络专业毕业设计(个人网站).pdf

    - 数据控件:如DropDownList和DataGrid控件,这些是***中用于数据绑定和展示的常用控件。 5. 网站安全性考虑 在网站设计和部署过程中,安全性是一个重要的考虑点。尽管文档没有直接提到,但在实际开发个人网站时...

    asp.net实验

    6. **表控件**:如`DataGrid`和`GridView`,它们用于展示表格数据,支持排序、分页和编辑功能。`Table`控件则允许手动创建和操作HTML表格。 在实验教学中,你可能会通过编写代码或使用Visual Studio IDE来实践这些...

    asp.net程序设计(C#)版课后题答案第134页7题

    7. **用户体验**:除了后端逻辑,也要考虑前端的用户体验,比如课程表的布局、样式以及交互反馈,这可能需要用到CSS和JavaScript来实现。 8. **错误处理**:为了确保程序的健壮性,你需要考虑错误处理,例如当用户...

    asp.net控件基础

    - **CSS样式**:用于定义控件的外观,可以使用`CssClass`属性指定样式类。 - **皮肤(Skin)**:允许对一组控件定义统一的外观,便于整个应用程序的UI一致性。 6. **控件的异步处理**: - **UpdatePanel**:实现...

    ASP.NET实用代码

    以上内容概述了ASP.NET中的一些实用代码技巧,包括如何在新窗口中打开页面、为按钮添加确认对话框、删除表格中的记录以及改变表格行的颜色等。这些技巧可以帮助开发者快速构建功能丰富的Web应用。

    asp.net控件

    - **功能描述**:Style 控件用于定义CSS样式,可以应用于其他控件。 - **应用场景**:用于统一页面或控件的样式风格。 ##### 24. Table (表格) - **功能描述**:Table 控件用于创建表格布局。 - **应用场景**:用于...

    asp.net经典代码

    从给定的ASP.NET代码片段中,我们可以提炼出多个实用且经典的编程技巧,涉及网页交互、数据处理和用户界面优化等方面。以下是对这些知识点的详细解释: ### 打开新窗口并传送参数 代码示例展示了如何在ASP.NET中...

Global site tag (gtag.js) - Google Analytics