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

如图

前台代码如下

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>

 <!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 id="Head1" runat="server">
<title></title>
<script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
<script language="javascript" type="text/javascript"> function vary() { var table = document.getElementById("<%=grv1.ClientID %>");
var finished = 1;
for (var i = 1; i < table.rows.length; i++) {
var filled = table.rows[i].cells[1].getElementsByTagName("select")[0].value;
if (filled == 0) { finished = 0; break; }
}
if (finished == 0) { alert("Self Not finished"); return false; }
else return true;
} function vary2() {
var finished = 1;
var selects = document.getElementsByTagName("select");
if (selects.length > 0)
for (var i = 0; i < selects.length; i++) {
if (selects[i].id.indexOf("ddlself", 0) > 0)
{
if (selects[i].value == 0)
{ finished = 0; break; }
} }
if (finished == 0) { alert("Not finished!"); return false; }
else return true; }
function vary3() { var finish = 1;
$('table[id$=grv1]').find('tr').each(function (row) {
$ddl = $(this).find('select');
if ($ddl != "undefined") {
var d = $ddl.val();
if (d == 0) { finish = 0; }
} });
if (finish == 0) { alert("Not finished!"); return false; }
else return true;
} function test() {
var select = document.getElementById("ddl");
if (select.value == 0) { alert("not finished"); return false; }
else return true;
} // $(document).ready(function(){$("input[id$=btnSave]").click(function(){vary3();});})
</script> </head> <body> <form id="form1" runat="server">
<div>
<table width="100%"><tr >
<td width="50%" align="center"><asp:gridview ID="grv1" runat="server"
GridColor="Black" AutoGenerateColumns="False"
onprerender="grv1_PreRender" >
<Columns>
<asp:BoundField HeaderText="Comments" DataField="Name" />
<asp:TemplateField HeaderText="Self">
<ItemTemplate>
<asp:DropDownList ID="ddlself" runat="server">
<asp:ListItem Value="0" Text="N/A"></asp:ListItem>
<asp:ListItem Value="1" Text="1"></asp:ListItem>
<asp:ListItem Value="2" Text="2"></asp:ListItem>
<asp:ListItem Value="3" Text="3"></asp:ListItem>
<asp:ListItem Value="4" Text="4"></asp:ListItem>
<asp:ListItem Value="5" Text="5"></asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Supervisor">
<ItemTemplate>
<asp:DropDownList ID="ddlsupervisor" runat="server">
<asp:ListItem Value="0" Text="N/A"></asp:ListItem>
<asp:ListItem Value="1" Text="1"></asp:ListItem>
<asp:ListItem Value="2" Text="2"></asp:ListItem>
<asp:ListItem Value="3" Text="3"></asp:ListItem>
<asp:ListItem Value="4" Text="4"></asp:ListItem>
<asp:ListItem Value="5" Text="5"></asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:gridview></td><td width="50%"></td></tr>
</table>
<table width="100%">
<tr><td width ="30%"></td><td width ="30%"><asp:Button ID="btnSave" Text="Save"
runat="server" onclick="btnSave_Click"/></td><td></td></tr>
</table>
</div>
</form>
</body>
</html>

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

后台代码如下

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace WebApplication2
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ if (!IsPostBack)
{
Info a = new Info();
a.Name = "a";
Info b = new Info();
b.Name = "b";
Info c = new Info();
c.Name = "c";
Info d = new Info();
d.Name = "d";
List<Info> list = new List<Info>(); list.Add(a);
list.Add(b);
list.Add(c);
list.Add(d);
grv1.DataSource = list;
grv1.DataBind(); btnSave.Attributes.Add("onclick", "javascript:vary();");
}
} protected void grv1_PreRender(object sender, EventArgs e)
{
if (ViewState["drp1"] != null) Set(grv1);
}
protected void Set(GridView grvItem)
{
List<string> list = new List<string>();
list = (List<string>)ViewState["drp1"];
for (int row = ; row < grvItem.Rows.Count; row++)
{
DropDownList ddlSelf = (DropDownList)grvItem.Rows[row].FindControl("ddlself");
ddlSelf.SelectedValue = list[row].ToString(); }
}
protected void btnSave_Click(object sender, EventArgs e)
{ List<string> list = new List<string>();
for (int row = ; row < grv1.Rows.Count; row++)
{
DropDownList ddlSelf = (DropDownList)grv1.Rows[row].Cells[].FindControl("ddlself");
string selectindex = ddlSelf.SelectedValue;
list.Add(selectindex);
}
ViewState["drp1"] = new List<string>();
ViewState["drp1"] = list; } }
}

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. exec与xargs区别

    区别描述: 两者都是对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令. -exec:{}表示命令的参数即为所找到的文件,以:表示comman命令的结束.\是转义符,因为分号在 ...

  2. Dev GridControl,GridView 显示多行文本及合并相同单元格

    显示多行文本的方法 首先把gridcontrol的views的Optionsview里的RowAutoHeight设置为True 在In-place Editor Repository 里添加 Mem ...

  3. Web App 前端构建(纯净版)

    asp.net 母版页: <!DOCTYPE html> <html> <head> <meta charset="utf-8" name ...

  4. ControlStyles(枚举)

    指定控件的样式和行为. 此枚举有一个 FlagsAttribute 特性,通过该特性可使其成员值按位组合.属性: ContainerControl:如果为true,则控件是类似容器的控件. UserP ...

  5. HelloCharts pie饼图绘制

    先引用hellocharts-library-<version>.jar 然后在layout中设置 <lecho.lib.hellocharts.view.PieChartView ...

  6. IOS中对于一些控件的抖动效果

    这两天在网上看到一个帖子讨论关于有些app 输入账密时候 错误的话会有抖动效果出现,然后自己琢磨了下如何实现,下面上代码!!! 首先 写一个UIView的分类 #import <UIKit/UI ...

  7. BZOJ 3277 串 (广义后缀自动机)

    3277: 串 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 309 Solved: 118 [Submit][Status][Discuss] De ...

  8. ubuntu中安装jdk

    1.下载jdk压缩包: http://download.oracle.com/otn-pub/java/jdk/7u55-b13/jdk-7u55-linux-x64.tar.gz 2.解压缩jdk ...

  9. 【面试】Spring问答Top 25

    本文由 ImportNew - 一直在路上 翻译自 howtodoinjava.欢迎加入翻译小组.转载请见文末要求. 本人收集了一些在大家在面试时被经常问及的关于Spring的主要问题,这些问题有可能 ...

  10. 百度UEditor编辑器关闭抓取远程图片功能(默认开启)

    这个坑娘的功能,开始时居然不知道如何触发,以为有个按钮,点击一下触发,翻阅了文档,没有发现,然后再网络上看到原来是复制粘贴非白名单内的图片到编辑框时触发,坑娘啊............... 问题又来 ...