在Gridview中加入Dropdownlist模板列,加入DropDownlist 是一种常用的操作,其中涉及到如何获取选择项和Gridview重新绑定两个要点。

如图

前台代码如下

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4.  
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head id="Head1" runat="server">
  7. <title></title>
  8. <script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
  9. <script language="javascript" type="text/javascript">
  10.  
  11. function vary() {
  12.  
  13. var table = document.getElementById("<%=grv1.ClientID %>");
  14. var finished = 1;
  15. for (var i = 1; i < table.rows.length; i++) {
  16. var filled = table.rows[i].cells[1].getElementsByTagName("select")[0].value;
  17. if (filled == 0) { finished = 0; break; }
  18. }
  19. if (finished == 0) { alert("Self Not finished"); return false; }
  20. else return true;
  21. }
  22.  
  23. function vary2() {
  24. var finished = 1;
  25. var selects = document.getElementsByTagName("select");
  26. if (selects.length > 0)
  27. for (var i = 0; i < selects.length; i++) {
  28. if (selects[i].id.indexOf("ddlself", 0) > 0)
  29. {
  30. if (selects[i].value == 0)
  31. { finished = 0; break; }
  32. }
  33.  
  34. }
  35. if (finished == 0) { alert("Not finished!"); return false; }
  36. else return true;
  37.  
  38. }
  39. function vary3() {
  40.  
  41. var finish = 1;
  42. $('table[id$=grv1]').find('tr').each(function (row) {
  43. $ddl = $(this).find('select');
  44. if ($ddl != "undefined") {
  45. var d = $ddl.val();
  46. if (d == 0) { finish = 0; }
  47. }
  48.  
  49. });
  50. if (finish == 0) { alert("Not finished!"); return false; }
  51. else return true;
  52. }
  53.  
  54. function test() {
  55. var select = document.getElementById("ddl");
  56. if (select.value == 0) { alert("not finished"); return false; }
  57. else return true;
  58. }
  59.  
  60. // $(document).ready(function(){$("input[id$=btnSave]").click(function(){vary3();});})
  61. </script>
  62.  
  63. </head>
  64.  
  65. <body>
  66.  
  67. <form id="form1" runat="server">
  68. <div>
  69. <table width="100%"><tr >
  70. <td width="50%" align="center"><asp:gridview ID="grv1" runat="server"
  71. GridColor="Black" AutoGenerateColumns="False"
  72. onprerender="grv1_PreRender" >
  73. <Columns>
  74. <asp:BoundField HeaderText="Comments" DataField="Name" />
  75. <asp:TemplateField HeaderText="Self">
  76. <ItemTemplate>
  77. <asp:DropDownList ID="ddlself" runat="server">
  78. <asp:ListItem Value="0" Text="N/A"></asp:ListItem>
  79. <asp:ListItem Value="1" Text="1"></asp:ListItem>
  80. <asp:ListItem Value="2" Text="2"></asp:ListItem>
  81. <asp:ListItem Value="3" Text="3"></asp:ListItem>
  82. <asp:ListItem Value="4" Text="4"></asp:ListItem>
  83. <asp:ListItem Value="5" Text="5"></asp:ListItem>
  84. </asp:DropDownList>
  85. </ItemTemplate>
  86. </asp:TemplateField>
  87. <asp:TemplateField HeaderText="Supervisor">
  88. <ItemTemplate>
  89. <asp:DropDownList ID="ddlsupervisor" runat="server">
  90. <asp:ListItem Value="0" Text="N/A"></asp:ListItem>
  91. <asp:ListItem Value="1" Text="1"></asp:ListItem>
  92. <asp:ListItem Value="2" Text="2"></asp:ListItem>
  93. <asp:ListItem Value="3" Text="3"></asp:ListItem>
  94. <asp:ListItem Value="4" Text="4"></asp:ListItem>
  95. <asp:ListItem Value="5" Text="5"></asp:ListItem>
  96. </asp:DropDownList>
  97. </ItemTemplate>
  98. </asp:TemplateField>
  99. </Columns>
  100. </asp:gridview></td><td width="50%"></td></tr>
  101. </table>
  102. <table width="100%">
  103. <tr><td width ="30%"></td><td width ="30%"><asp:Button ID="btnSave" Text="Save"
  104. runat="server" onclick="btnSave_Click"/></td><td></td></tr>
  105. </table>
  106. </div>
  107. </form>
  108. </body>
  109. </html>

其中三个Js代码段均能实现功能,不过作为三个Jq,尚有不足,虽然undefined的引入使其功能可以实现,不过总归不是正统的解决办法,希望可以改进。

后台代码如下

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7.  
  8. namespace WebApplication2
  9. {
  10. public partial class WebForm1 : System.Web.UI.Page
  11. {
  12. protected void Page_Load(object sender, EventArgs e)
  13. {
  14.  
  15. if (!IsPostBack)
  16. {
  17. Info a = new Info();
  18. a.Name = "a";
  19. Info b = new Info();
  20. b.Name = "b";
  21. Info c = new Info();
  22. c.Name = "c";
  23. Info d = new Info();
  24. d.Name = "d";
  25. List<Info> list = new List<Info>();
  26.  
  27. list.Add(a);
  28. list.Add(b);
  29. list.Add(c);
  30. list.Add(d);
  31. grv1.DataSource = list;
  32. grv1.DataBind();
  33.  
  34. btnSave.Attributes.Add("onclick", "javascript:vary();");
  35. }
  36. }
  37.  
  38. protected void grv1_PreRender(object sender, EventArgs e)
  39. {
  40. if (ViewState["drp1"] != null)
  41.  
  42. Set(grv1);
  43. }
  44. protected void Set(GridView grvItem)
  45. {
  46. List<string> list = new List<string>();
  47. list = (List<string>)ViewState["drp1"];
  48. for (int row = ; row < grvItem.Rows.Count; row++)
  49. {
  50. DropDownList ddlSelf = (DropDownList)grvItem.Rows[row].FindControl("ddlself");
  51. ddlSelf.SelectedValue = list[row].ToString();
  52.  
  53. }
  54. }
  55. protected void btnSave_Click(object sender, EventArgs e)
  56. {
  57.  
  58. List<string> list = new List<string>();
  59. for (int row = ; row < grv1.Rows.Count; row++)
  60. {
  61. DropDownList ddlSelf = (DropDownList)grv1.Rows[row].Cells[].FindControl("ddlself");
  62. string selectindex = ddlSelf.SelectedValue;
  63. list.Add(selectindex);
  64. }
  65. ViewState["drp1"] = new List<string>();
  66. ViewState["drp1"] = list;
  67.  
  68. }
  69.  
  70. }
  71. }

Js获取Gridview中Dropdownlist选中状态的更多相关文章

  1. js获取checkbox中所有选中值及input后面所跟的文本

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  2. js获取gridview模板列中textbox行列的值

    下面一个例子:在gridview中第一列输入数值,第二列输入数值,点击第三列的时候进行计算 求和,如果不符合标记为红色字体. 如图: 代码 : <html xmlns="http:// ...

  3. 获取GridView中RowCommand的当前索引行(转)

    获取GridView中RowCommand的当前索引行 前台添加一模版列,里面添加一个LinkButton 前台 (如果在后台代码中用e.CommandArgument取值的话前台代码就必须在按钮中设 ...

  4. 转:获取GridView中RowCommand的当前索引行

    获取GridView中RowCommand的当前索引行 前台添加一模版列,里面添加一个LinkButton 前台 (如果在后台代码中用e.CommandArgument取值的话前台代码就必须在按钮中设 ...

  5. JS基础入门篇( 三 )—使用JS获取页面中某个元素的4种方法以及之间的差别( 一 )

    1.使用JS获取页面中某个元素的4种方法 1.通过id名获取元素 document.getElementById("id名"); 2.通过class名获取元素 document.g ...

  6. js获取URL中的参数

    js获取URL中的一些参数的意思 location对象 含有当前URL的信息. 属性 href 整个URL字符串. protocol 含有URL第一部分的字符串,如http: host 包含有URL中 ...

  7. 获取gridpanel 中 checkbox的状态

    最近一直在用extjs前天框架来写作项目,很少用到这个框架,过程中遇到很多麻烦, 可能就是一个小的问题会困扰你很长时间, example: 我做一个报表,要获取gridpanel中 checkbox的 ...

  8. js获取jsp中的变量值

    js获取jsp中的变量值,有两种方式: 1.jsp标签获取属性 var message = '<%=request.getAttribute("message")%>' ...

  9. js 获取url中的参数 修改url 参数 移除url参数

    js 获取url中的参数 修改url 参数 移除url参数 var jsUrlHelper = { getUrlParam : function(url, ref) { var str = " ...

随机推荐

  1. bit、byte、位、字节、字符串等概念

    原始文章:http://djt.qq.com/article/view/658 1.古代送信:马车,烽火,信鸽 2.1837年,世界第一条电报诞生, 美国科学家莫尔斯尝试用一些“点”和“划”来表示不同 ...

  2. eclipse 404以及tomcat failed to start错误

    eclipse中的servlet项目有时会不编译,不编译可能就会出现404错误,因为在build path的输出目录并没有class文件,然而如果在输出目录引入之前编译的class文件,就可能出现cl ...

  3. hbase 单机模式安装

    1:下载安装包(我下载的0.94版本,如果考虑后期与hadoop兼容,需要找合适的版本) http://mirrors.hust.edu.cn/apache/hbase/hbase-0.94.20/h ...

  4. iOS_SN_BlueTooth (二)iOS 连接外设的代码实现

    原文:http://www.cocoachina.com/ios/20150917/13456.html?utm_source=tuicool&utm_medium=referral 上一篇文 ...

  5. WCF相关

    1.WCF初探-1:认识WCF(概览)2.WCF初探-2:手动实现WCF程序3.WCF精通系列4.无废话WCF系列教程

  6. unity针对iphone的屏幕旋转

    屏幕旋转可以在引擎里设置: 依次点开 Edit——Project Setting——Player 即可设置如图: 接下来的是 雨松大神的 代码控制,本屌是安卓机器,没能测试. C# using Uni ...

  7. n!mod p的求法

    我们假设p为素数,n!=a*pe,则我们需要求解a mod p和e. e是n!能够迭代整除p的次数,因此可以使用下面式子计算: n/p+n/p2+n/p3…… 我们只需要对pt≤n的t进行计算所以复杂 ...

  8. 火狐的bug

    初次启动火狐的界面并且默认是最大化的情况下,第一个业签时会发现火狐的浏览器无法达到下边框,请看图 途中可以看到,body区域没有填充满浏览器可用区域.但是当浏览器已经启动页签,现在是第二个页签时,则不 ...

  9. Creating a settings table that can handle almost any type of value

    Update: Updated article here. Today I wanted to be able to have a table store any type of value as a ...

  10. Scala学习文档-样本类与模式匹配(match,case,Option)

    样本类:添加了case的类便是样本类.这种修饰符可以让Scala编译器自动为这个类添加一些语法上的便捷设定. //样本类case class //层级包括一个抽象基类Expr和四个子类,每个代表一种表 ...