首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

修改孟子e章的“使用 AJAX,局部刷新 GridView 进行数据绑定的简单实现”两个有关问题

2012-03-22 
修改孟子e章的“使用 AJAX,局部刷新 GridView 进行数据绑定的简单实现”两个问题代码如下:有两个问题,一个是

修改孟子e章的“使用 AJAX,局部刷新 GridView 进行数据绑定的简单实现”两个问题
代码如下:

有两个问题,一个是gridivew里的选取没有作用,linkbtnSales_Click里的alert没有弹出来;
另一个问题很奇怪,整个语句里只有一个textbox控件:ID="txtitemnum",运行的时候在txtitemnum里输入字母页面会出现两个textbox,这也太诡异了吧,稍微贴运行后的源文件

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
   
  protected void Page_Load(object sender, EventArgs e)
  {
  string id = Request.QueryString["id"];
  if (Request.QueryString["id"] != null)
  {
  Response.ClearContent();
  string sql = "select distinct 成品代码,成品名称 from aaa where 成品代码='" + id + "'";

  zs.Open(sql);
  GvData.DataSource = zs.m_table;
  GvData.DataBind();
  zs.Close();
  }
  }

  protected void linkbtnSales_Click(object sender, EventArgs e)
  {
  string id = (sender as LinkButton).CommandArgument;
  Response.Write("<script>alert(id);<"+"/script>");
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <title>使用 AJAX,局部刷新 GridView 进行数据绑定的简单实现</title>
  <script type="text/javascript">
  function GetData() {
  document.getElementById("d").innerHTML = "正在读取数据……";
  h = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP");
  var id = document.getElementById("<%=txtitemnum.ClientID%>").value;
  h.open("GET", '<%=Request.FilePath %>?id=' + id, true);
  h.onreadystatechange = function () {
  if (h.readyState == 4) {
  if (h.status >= 200 && h.status < 300) {
  document.getElementById("d").innerHTML = h.responseText;
  }
  else {
  document.getElementById("d").innerHTML = "<h2>数据操作错误:</h2>" + h.responseText;
  }
  }
  }
  h.send(null);
  }
  alert("这个提示,只出现在第一次打开页面。");
  </script>
</head>
<body>
  <form id="form1" runat="server">
  <asp:TextBox ID="txtitemnum" onkeyup="GetData()" runat="server" ></asp:TextBox>
   
  <asp:GridView ID="GvData" runat="server" Width="99%" AutoGenerateColumns="False"
  CssClass="gridview" EmptyDataText="没有数据" >
  <PagerSettings Visible="False" />
  <Columns>
  <asp:BoundField HeaderText="成品代码" DataField="成品代码" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField> 
  <asp:BoundField HeaderText="成品名称" DataField="成品名称" ><ItemStyle HorizontalAlign="Center" /></asp:BoundField>
  <asp:TemplateField HeaderText="选取"><ItemTemplate><asp:LinkButton ID="linkbtnSales" CommandArgument='<%#Eval("成品代码")+"|"+Eval("成品名称")%>' runat="server" OnClick="linkbtnSales_Click" ForeColor="Red">选取</asp:LinkButton></ItemTemplate><ItemStyle HorizontalAlign="Center" /></asp:TemplateField>


  </Columns>
  <RowStyle Height="25px" />
  <EmptyDataRowStyle ForeColor="Red" HorizontalAlign="Center" />
  </asp:GridView>
  </form>
  <div id="d"></div>
</body>
</html>




以下是编译后,在页面上查看源文件得到的信息:
请各位大侠帮忙看看这是怎么回事啊。


<!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"><title>
使用 AJAX,局部刷新 GridView 进行数据绑定的简单实现
</title>
  <script type="text/javascript">
  function GetData() {
  document.getElementById("d").innerHTML = "正在读取数据……";
  h = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP");
  var id = document.getElementById("txtitemnum").value;
  h.open("GET", '/Default2.aspx?id=' + id, true);
  h.onreadystatechange = function () {
  if (h.readyState == 4) {
  if (h.status >= 200 && h.status < 300) {
  document.getElementById("d").innerHTML = h.responseText;
  }
  else {
  document.getElementById("d").innerHTML = "<h2>数据操作错误:</h2>" + h.responseText;
  }
  }
  }
  h.send(null);
  }
  alert("这个提示,只出现在第一次打开页面。");
  </script>
</head>
<body>
  <form name="form1" method="post" action="Default2.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTIwMDc1MDIyNA9kFgICBA9kFgICAw88KwARAQEQFgAWABYAZBgBBQZHdkRhdGEPZ2Sg5y1OhV1KqPNgC2h+1aFt7hbm5a7uMz4QvSomw5H/rw==" />
</div>

<div>

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgKW04b0AwLS5pKnCH62TDczY1HGDVGqYbAC3Q1U78XgFvI/ISmH90/VeAr/" />
</div>
  <input name="txtitemnum" type="text" id="txtitemnum" onkeyup="GetData()" />
   
  <div>

</div>
  </form>
  <div id="d"></div>
</body>
</html>

[解决办法]
知道你说的是什么意思了。。。。。

responseText这个里边包含的代码是你请求页面所有的HTML代码,你把那些东西都放到一个DIV里当然就会多出一个TEXTBOX了。。。。

关于这个 你最好做一个单独的ASCX页面,里边只有一个DATAGRID的内容,这样就可以了

热点排行