datagrid与DropDownList关联使用
最近做一个页面需要用到这个两个控件,之前虽然看过,但是没有动手实践过。突然要做这么一个页面,并用上,真的有点着急。于是乎,网上疯狂找datagrid与DropDownList 的例子,找了很多很多,看了,并实践了,但是不是我想要的效果。昨天晚上琢磨了好几个小时,都没有弄好,后来干脆不弄了,躺在床上想了又想,结合网上找的案例,应该是灵感突现,今天一来到公司就动手实践。实践是检验最好的标准。实现了,成功了。
很高兴,急着把它写成笔记,一来记录,二来分享吧。开始贴码。
一、页面代码
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="datagridyuDropDownList.aspx.vb" Inherits="firstwebVbTest.datagridyuDropDownList" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.dghotelRange
{
min-width:900px;
width:auto;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataGrid ID="dgtest" runat="server" AutoGenerateColumns="False"
CssClass="dghotelRange">
<AlternatingItemStyle BackColor="#E0E0E0"></AlternatingItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#E7E7FF" BackColor="#4A3C8C"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="编号">
<ItemTemplate>
<asp:Literal ID="labId" runat="server" Text='<%# Container.DataItem("Id") %>'></asp:Literal>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="Name" HeaderText="名字"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="父编号">
<ItemTemplate>
<asp:textbox id="txtparenetId" runat="server" Text='<%# Container.DataItem("parenetId") %>' width="50px"></asp:textbox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="类别">
<ItemTemplate>
<asp:DropDownList ID="ddlUsers" runat="server" ></asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="memo" HeaderText="备注"></asp:BoundColumn>
</Columns>
<PagerStyle Mode="NumericPages"></PagerStyle>
</asp:DataGrid>
<asp:Button ID="btnGet" runat="server" Text="显示" />
</div>
</form>
</body>
</html>
二、后台代码
连接数据库的代码有点丑陋了。
Imports System.Data
Imports System.Data.SqlClient
Public Class datagridyuDropDownList
Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub
Dim str As String = "Data Source=xxxxx;Initial Catalog=Mytest;Integrated Security=True"
Dim conn As SqlConnection = New SqlConnection(str)
Dim cmd As SqlCommand = New SqlCommand()
Dim ad As SqlDataAdapter = New SqlDataAdapter()
''' <summary>
''' DataGrid 绑定数据下拉列表绑定数据显示---关联的(另一个表的text值)
''' </summary>
''' <remarks></remarks>
Public Sub getDataTable()
Dim ds As DataSet = New DataSet()
Dim strsql = "select top 10 Id, Name, parenetId, memo from test"
Try
conn.Open()
cmd.CommandText = strsql
cmd.Connection = conn
ad.SelectCommand = cmd
ad.Fill(ds)
dgtest.DataSource = ds.Tables().DefaultView
dgtest.DataBind()
'这一段代码就是绑定下拉类别一出来的值 这个是关联的 实现这个花了很多时间
For i As Integer = To dgtest.Items.Count -
Dim NID As Literal = dgtest.Items.Item(i).FindControl("labId")
Dim Users As DropDownList = dgtest.Items.Item(i).FindControl("ddlUsers")
GetDataUser(Users)
Users.SelectedValue = NID.Text
Next Catch ex As Exception Finally
cmd.Dispose()
ad.Dispose()
conn.Close()
End Try End Sub
''' <summary>
''' 初始时绑定数据
''' </summary>
''' <param name="ddlUsers"></param>
''' <remarks></remarks>
Public Sub GetDataUser(ByVal ddlUsers As DropDownList)
Dim strsql = "select top 10 Id, Names from Users"
Dim ds As DataSet = New DataSet()
conn.Close()
Try
conn.Open()
cmd.CommandText = strsql
cmd.Connection = conn
ad.SelectCommand = cmd
ad.Fill(ds)
ddlUsers.DataSource = ds.Tables().DefaultView
ddlUsers.DataTextField = "Names"
ddlUsers.DataValueField = "Id"
ddlUsers.DataBind()
Catch ex As Exception Finally
cmd.Dispose()
ad.Dispose()
conn.Close() End Try
End Sub
''' <summary>
''' 下拉绑定数据 拥有更改时
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Public Function GetUsersDataTable() As DataTable
Dim strsql = "select top 10 Id, Names from Users"
Dim dt As DataTable = New DataTable()
Dim ds As DataSet = New DataSet()
Try
conn.Open()
cmd.CommandText = strsql
cmd.Connection = conn
ad.SelectCommand = cmd
ad.Fill(ds)
dt = ds.Tables()
Catch ex As Exception Finally
cmd.Dispose()
ad.Dispose()
conn.Close()
End Try
Return dt
End Function
''' <summary>
''' 这个是参考更改下拉数据代码 只是我这里没有做修改和添加的代码 所以在这里没有用
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Protected Sub dgtest_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgtest.ItemDataBound
If e.Item.ItemType = ListItemType.EditItem Then
Dim ddl As DropDownList = CType(e.Item.FindControl("ddlUsers"), DropDownList)
ddl.DataSource = GetUsersDataTable()
ddl.DataValueField = "Id"
ddl.DataTextField = "Names"
ddl.DataBind()
Dim dv As DataRowView = CType(e.Item.DataItem, DataRowView)
ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByText(dv("Names").ToString()))
End If
End Sub
''' <summary>
''' 显示数据
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Protected Sub btnGet_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnGet.Click
getDataTable()
End Sub
End Class
三、显示的结果如下图
总结
付出,还是有收获的。
参考链接:
http://www.cnblogs.com/skylaugh/archive/2006/03/17/352333.html
http://wzoot.blog.163.com/blog/static/41638800200791643035837/
datagrid与DropDownList关联使用的更多相关文章
- DataRead 和DataSet区别
dataset表示一个数据集,是数据在内存中的缓存. 可以包括多个表DatSet 连接数据库时是非面向连接的.把表全部读到Sql中的缓冲池,并断开于数据库的连接 datareader 连接数据库时是面 ...
- 转载 感受K2.Net 2003工作流解决方案
接触SourceCode公司的工作流产品K2.NET 2003有一段时间了,想把一些心得分享出来,和各位共同探讨一下,抛砖引玉,希望能对相关人士以启发. K2.Net 2003是基于微软.Net Fr ...
- asp.net几个重要对象
DataSet是用来做连接sql的一种方法,意思是把数据库的副本存在应用程序里,应用程序开始运行时,把数据库相关数据保存到DataSet.DataTable表示内存中数据的一个表.常和DefaultV ...
- easyui datagrid中关联combox
datagrid中列上关联combobox{ field: 'SysCode', title: '系统代码', width: 150, align: 'left', editor: { type: ' ...
- datagrid加下拉列表dropdownlist
datagrid中代码: <asp:datagrid id="dgList" runat="server" ItemStyle-HorizontalAli ...
- 序列化表单为json对象,datagrid带额外参提交一次查询 后台用Spring data JPA 实现带条件的分页查询 多表关联查询
查询窗口中可以设置很多查询条件 表单中输入的内容转为datagrid的load方法所需的查询条件向原请求地址再次提出新的查询,将结果显示在datagrid中 转换方法看代码注释 <td cols ...
- EasyUI中tree,Datagrid,pagenation的使用EasyUI中Datagrid和pagenation进行关联时,再次点击pagenation时让表格数据显示的问题
// 获取选中一行的情况,下面的一个参数可以代表一个DataGridfunction getSelected(dialogEle,dataFileTextEle) { // 获取选中一行的情况. va ...
- Yii 1开发日记 -- 后台搜索功能下拉及关联表搜索
Yii 1 实现后台搜索,效果如下: 一. 下拉搜索: 1.模型中和常规的一样 if (isset($_GET['agency']['status']) && $_GET['agenc ...
- WPF DataGrid常用属性记录
WPF DataGrid常用属性记录 组件常用方法: BeginEdit:使DataGrid进入编辑状态. CancelEdit:取消DataGrid的编辑状态. CollapseRowGroup:闭 ...
随机推荐
- XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem L. Canonical duel
题目:Problem L. Canonical duelInput file: standard inputOutput file: standard outputTime limit: 2 seco ...
- 防止 IOS 和 安卓 自动锁屏
Ios代码 在文件AppController中的 didFinishLaunchingWithOptions函数中加一行代码即可: [[UIApplication sharedApplication] ...
- JVM内存结构 JVM的类加载机制
JVM内存结构: 1.java虚拟机栈:存放的是对象的引用(指针)和局部变量 2.程序计数器:每个线程都有一个程序计数器,跟踪代码运行到哪个位置了 3.堆:对象.数组 4.方法区:字节流(字节码文件) ...
- 【Linux学习】3.Linux常见配置文件
一./etc 配置文件/etc/passwd 用户数据库,其中的域给出了用户名.真实姓名.家目录.加密口令和用户的其他信息 /etc/group 类似/etc/passwd ,但说明的不是用户而是组. ...
- M4中遇到的问题
MDK5的安装以及破解 这里遇到了一个问题,PDF上并没有扯个界面我就先截了个图然后点安装,后来看来这其中并没有什么问题 在这里就会出现卡死的情况,也就是说并不能从这个界面上下载两个相应的安装包 在M ...
- 20145329《Java程序设计》第十周学习总结
教材学习内容总结 网络编程 • 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据 1.网络概述 • 网络编程的实质:两个( ...
- 20144303 《Java程序设计》第三周学习总结
20144303 <Java程序设计>第三周学习总结 教材学习内容总结 •对象是存在的具体实体,具有明确的状态和行为,类是具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属 ...
- 前端小炒的win7使用笔记(收藏篇)
收藏篇 此中技巧及使用笔记,大多为冲浪时无意间发现,进而总结,其中种种小超都已一一验证过. 传说中WIN7上帝模式可查看200多项系统设置项目 在桌面创建文件夹,命名为 GodModel.{ED7BA ...
- C++求矩阵的鞍点
矩阵的鞍点就是指它在本行中的值最大,在本列中的值最小. 求解思路: 求出每行的最大值MaxRow以及每列的最小值MinColumn 保存行最大值的位置和列最小值的位置 如果行最大值得位置和列最小值的相 ...
- 简单的dos命令
cd .. 进入上一层目录cd /.. 进入当前盘所有根目录d: 进入d盘dir 查看下一级目录d:>d:\abc.txt 新建一个文档hostname 主机名SET 查看环境变 ...