一个gridview中有一个dropdownlist(是否完成:有两个值是和否),当值发生变化时gridview中另一个文本框(完成时间)生成完成时间,或清空。原来是使用AutoPostBack,今天觉得总刷新太麻烦,就是用js写了一段代码,经过调试在IE中正常,但是在firefox 和chrome 不起作用(dropdownlist改变是否完成的值)文本框没变化。请高手赐教。
前台代码:<asp:TemplateField HeaderText="是否解决" SortExpression="是否解决"><ItemStyle width="90px" />
<EditItemTemplate>
<asp:DropDownList ID="DropDownList4" runat="server" DataSourceID="SqlDataSource3"
DataTextField="YesORNo" DataValueField="YesORNo" SelectedValue='<%# Bind("是否解决") %>' AutoPostBack="False"
onchange="CreatWCRQ()">
</asp:DropDownList><asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:xxzxProblemConnectionString %>"
SelectCommand="SELECT * FROM [YesORNo]"></asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label13" runat="server" Text='<%# Eval("是否解决") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField><asp:TemplateField HeaderText="解决时间" SortExpression="解决时间" ><ItemStyle width="100px" />
<EditItemTemplate>
<asp:TextBox ID="TextBox3" Enabled='<%# FZRIsEdit %>' runat="server" Text='<%# Bind("解决时间", "{0:yyyy-MM-dd}") %>' onclick="WdatePicker({readOnly:true})"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Eval("解决时间", "{0:yyyy-MM-dd}") %>' Height="19px" ></asp:Label>
</ItemTemplate>
</asp:TemplateField>js代码:
//日期格式化函数
Date.prototype.format = function(format) {
var o = {
"M+": this.getMonth() + 1, //month
"d+": this.getDate(), //day
"h+": this.getHours(), //hour
"m+": this.getMinutes(), //minute
"s+": this.getSeconds(), //second
"q+": Math.floor((this.getMonth() + 3) / 3), //quarter
"S": this.getMilliseconds() //millisecond
}
if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
(this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o) if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length == 1 ? o[k] :
("00" + o[k]).substr(("" + o[k]).length));
return format;
}
function CreatWCRQ() { var gvw = document.getElementById('<%=GridView1.ClientID %>');
var rows = gvw.rows.length; var thedate = (new Date()).format("yyyy-MM-dd"); for (i = 0; i < rows; i++) {
if (gvw.rows[i].cells[12].childNodes[0].value == "是" || gvw.rows[i].cells[12].childNodes[0].value == "否")
{ if (gvw.rows[i].cells[12].childNodes[0].value == "是") {
gvw.rows[i].cells[15].childNodes[0].value = thedate;
break; }
else {
gvw.rows[i].cells[15].childNodes[0].value = "";
break;
}
}
}
}
前台代码:<asp:TemplateField HeaderText="是否解决" SortExpression="是否解决"><ItemStyle width="90px" />
<EditItemTemplate>
<asp:DropDownList ID="DropDownList4" runat="server" DataSourceID="SqlDataSource3"
DataTextField="YesORNo" DataValueField="YesORNo" SelectedValue='<%# Bind("是否解决") %>' AutoPostBack="False"
onchange="CreatWCRQ()">
</asp:DropDownList><asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:xxzxProblemConnectionString %>"
SelectCommand="SELECT * FROM [YesORNo]"></asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label13" runat="server" Text='<%# Eval("是否解决") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField><asp:TemplateField HeaderText="解决时间" SortExpression="解决时间" ><ItemStyle width="100px" />
<EditItemTemplate>
<asp:TextBox ID="TextBox3" Enabled='<%# FZRIsEdit %>' runat="server" Text='<%# Bind("解决时间", "{0:yyyy-MM-dd}") %>' onclick="WdatePicker({readOnly:true})"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Eval("解决时间", "{0:yyyy-MM-dd}") %>' Height="19px" ></asp:Label>
</ItemTemplate>
</asp:TemplateField>js代码:
//日期格式化函数
Date.prototype.format = function(format) {
var o = {
"M+": this.getMonth() + 1, //month
"d+": this.getDate(), //day
"h+": this.getHours(), //hour
"m+": this.getMinutes(), //minute
"s+": this.getSeconds(), //second
"q+": Math.floor((this.getMonth() + 3) / 3), //quarter
"S": this.getMilliseconds() //millisecond
}
if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
(this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o) if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length == 1 ? o[k] :
("00" + o[k]).substr(("" + o[k]).length));
return format;
}
function CreatWCRQ() { var gvw = document.getElementById('<%=GridView1.ClientID %>');
var rows = gvw.rows.length; var thedate = (new Date()).format("yyyy-MM-dd"); for (i = 0; i < rows; i++) {
if (gvw.rows[i].cells[12].childNodes[0].value == "是" || gvw.rows[i].cells[12].childNodes[0].value == "否")
{ if (gvw.rows[i].cells[12].childNodes[0].value == "是") {
gvw.rows[i].cells[15].childNodes[0].value = thedate;
break; }
else {
gvw.rows[i].cells[15].childNodes[0].value = "";
break;
}
}
}
}
var gvw = document.getElementById('<%=GridView1.ClientID %>');
var rows = gvw.rows.length;
var thedate = "2011-11-11
var flag = "0"; for (i = 1; i < rows; i++) {
if (flag == "0") {
//此层循环式为了解决firefox、chrome等浏览器兼容性问题
for (j = 0; j < gvw.rows[i].cells[12].childNodes[j].length; j++) {
if (gvw.rows[i].cells[12].childNodes[j].value == "是") {
gvw.rows[i].cells[15].childNodes[j].value = thedate;
flag = 1;
break;
}
if (gvw.rows[i].cells[12].childNodes[j].value == "否") {
gvw.rows[i].cells[15].childNodes[j].value = "";
flag = 1;
break;
}
}
}
else {
break;
}
}
}
function CreatWCRQ() {
var gvw = document.getElementById('<%=GridView1.ClientID %>');
var rows = gvw.rows.length;
var thedate = "2011-11-11
var flag = "0"; for (i = 1; i < rows; i++) {
if (flag == "0") {
//此层循环式为了解决firefox、chrome等浏览器兼容性问题
for (j = 0; j < gvw.rows[i].cells[12].childNodes[j].length; j++) {
if (gvw.rows[i].cells[12].childNodes[j].value == "是") {
gvw.rows[i].cells[15].childNodes[j].value = thedate;
flag = 1;
break;
}
if (gvw.rows[i].cells[12].childNodes[j].value == "否") {
gvw.rows[i].cells[15].childNodes[j].value = "";
flag = 1;
break;
}
}
}
else {
break;
}
}
}