急求解决.net行绑定事件的问题

xttxqjfg 2015-04-07 03:36:54
在项目中出现这样一个问题,有一个gridview的第一列和第二列里面的值是通过行绑定的触发事件(RowDataBound)写进去的,比如有说第一列的值是序号,在最后一列的模板列中点击一个地址跳转到另外一个页面,但是问题就来了,当跳转到另外一个页面的时候,第一列和第二列里面的值就没有了,无任何显示,必须要重新刷新页面才会出来。请问导致这种问题出现的原因在哪里?怎么解决?
...全文
289 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xttxqjfg 2015-04-13
  • 打赏
  • 举报
回复
引用 14 楼 starfd 的回复:
你这个数据绑定的过程!IsPostBack判断吗?在Page_Load事件里面不需要每次绑定
这个代码这样写的话,每次我点击跳转到另外一个页面的时候,原来页面的序号列的值就会消失。。
xttxqjfg 2015-04-13
  • 打赏
  • 举报
回复
引用 14 楼 starfd 的回复:
你这个数据绑定的过程!IsPostBack判断吗?在Page_Load事件里面不需要每次绑定
pageload中的绑定事件加了ispostback也是没用的,我把代码贴全一下吧。代码如下。

protected void Page_Load(object sender, EventArgs e)
    {
        SqlDataSource_temp.SelectCommand = "SELECT * FROM [tb_File] ORDER BY [id] DESC";
    }

    //行绑定事件
    protected void GView_download_list_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //高亮显示鼠标所在行
            e.Row.Attributes.Add("onmouseover", "currentcolor = this.style.backgroundColor;this.style.backgroundColor='99CCCC'");
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor = currentcolor");

            int count = Convert.ToInt32(this.GView_temp.PageIndex) * 20 + Convert.ToInt32(this.GView_temp.Rows.Count) + 1;
            e.Row.Cells[0].Text = count.ToString();
        }
    }

    //预览和下载事件
    protected void GView_temp_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        string _id = e.CommandArgument.ToString();

        if (e.CommandName == "_proview")
        {
            StringBuilder s = new StringBuilder();
            s.Append("<script language=javascript>");
            s.Append("var a=window.open(‘Proview.aspx?sid=" +_id + "');");
            s.Append("</script>");
            Type cstype = this.GetType();
            ClientScriptManager cs = Page.ClientScript;
            string sname = "_version";
            if (!cs.IsStartupScriptRegistered(cstype, sname))
                cs.RegisterStartupScript(cstype, sname, s.ToString()); 
        }

    }

    
_雨后初晴_ 2015-04-09
  • 打赏
  • 举报
回复
学习学习,


            if (!IsPostBack)
            {
                Bind();
            }
www_qiangjinhao 2015-04-09
  • 打赏
  • 举报
回复
编辑绑定GridView所有行中的数据 一、GridView设置 <asp:GridView ID="GridView1" Runat="server" DataKeyNames="ID" AutoGenerateColumns="False" AllowPaging="True" onpageindexchanging="GridView1_PageIndexChanging" PageSize="5" Width="682px" CellPadding="3" GridLines="Horizontal" BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px"> <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" /> <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" /> <Columns> <asp:BoundField DataField="ID" HeaderText="编号" /> <asp:TemplateField SortExpression="au_lname" HeaderText="教师姓名"> <ItemTemplate> <asp:TextBox Runat="server" Text='<%# Bind("au_lname") %>' ID="txtName" Height="22px" Width="90px"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="教师性别"> <ItemTemplate> <asp:TextBox Runat="server" Text='<%# Bind("sex") %>' ID="txtSex" Height="22px" Width="54px"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="教师学历"> <ItemTemplate> <asp:TextBox ID="txtState" runat="server" Text='<%# Bind("state") %>' Height="22px" Width="97px"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="电话号码"> <ItemTemplate> <asp:TextBox ID="txtPhone" runat="server" Text='<%# Bind("phone") %>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="家庭地址"> <ItemTemplate> <asp:TextBox ID="txtAddress" runat="server" Text='<%# Bind("address") %>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> </Columns> <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" /> <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" /> <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" /> <AlternatingRowStyle BackColor="#F7F7F7" /> </asp:GridView> 二、绑定数据控件 (连接数据库省略) protected void Button1_Click(object sender, EventArgs e) { StringBuilder query = new StringBuilder();//动态字符串类StringBuilder for (int i = 0; i < GridView1.Rows.Count; i++) { GridViewRow row = GridView1.Rows[i]; string value1 = ((TextBox)row.Cells[1].FindControl("txtName")).Text.Replace("'", "''"); string value2 = ((TextBox)row.Cells[2].FindControl("txtSex")).Text.Replace("'", "''"); string value3 = ((TextBox)row.Cells[3].FindControl("txtState")).Text.Replace("'", "''"); string value4 = ((TextBox)row.Cells[4].FindControl("txtPhone")).Text.Replace("'", "''"); string value5 = ((TextBox)row.Cells[5].FindControl("txtAddress")).Text.Replace("'", "''"); string value = GridView1.DataKeys[i].Value.ToString(); query.Append("UPDATE [tb_mrEmp] SET [au_lname] = '")//追加字符串 .Append(value1).Append("' , [sex] = '") .Append(value2).Append("' , [state] = '") .Append(value3).Append("' , [phone] = '") .Append(value4).Append("' , [address] = '") .Append(value5).Append("' WHERE [ID] = '") .Append(value).Append("';\n"); } conn.Open();//打开数据库连接 SqlCommand command = new SqlCommand(query.ToString(), conn); if (Convert.ToInt32(command.ExecuteNonQuery()) > 0)//判断更新操作是否成功 { Response.Write("<script>alert('一次修改数据成功!')</script>"); }//codego.net/15/1/1/ else { Response.Write("<script>alert('一次修改数据失败!')</script>"); } conn.Close();//关闭数据库连接 bind();//更新后重新绑定下数据 }
  • 打赏
  • 举报
回复
你这个数据绑定的过程!IsPostBack判断吗?在Page_Load事件里面不需要每次绑定
xttxqjfg 2015-04-09
  • 打赏
  • 举报
回复
引用 12 楼 starfd 的回复:
打开页面的话就直接在模板里用a标签就可以了,不用通过RowCommand
打开页面这个只是一方面,其他操作的话也会导致行绑定的数据失效。。
  • 打赏
  • 举报
回复
打开页面的话就直接在模板里用a标签就可以了,不用通过RowCommand
xttxqjfg 2015-04-09
  • 打赏
  • 举报
回复
引用 8 楼 www_qiangjinhao 的回复:
编辑绑定GridView所有行中的数据 一、GridView设置 <asp:GridView ID="GridView1" Runat="server" DataKeyNames="ID" AutoGenerateColumns="False" AllowPaging="True" onpageindexchanging="GridView1_PageIndexChanging" PageSize="5" Width="682px" CellPadding="3" GridLines="Horizontal" BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px"> <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" /> <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" /> <Columns> <asp:BoundField DataField="ID" HeaderText="编号" /> <asp:TemplateField SortExpression="au_lname" HeaderText="教师姓名"> <ItemTemplate> <asp:TextBox Runat="server" Text='<%# Bind("au_lname") %>' ID="txtName" Height="22px" Width="90px"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="教师性别"> <ItemTemplate> <asp:TextBox Runat="server" Text='<%# Bind("sex") %>' ID="txtSex" Height="22px" Width="54px"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="教师学历"> <ItemTemplate> <asp:TextBox ID="txtState" runat="server" Text='<%# Bind("state") %>' Height="22px" Width="97px"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="电话号码"> <ItemTemplate> <asp:TextBox ID="txtPhone" runat="server" Text='<%# Bind("phone") %>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="家庭地址"> <ItemTemplate> <asp:TextBox ID="txtAddress" runat="server" Text='<%# Bind("address") %>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> </Columns> <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" /> <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" /> <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" /> <AlternatingRowStyle BackColor="#F7F7F7" /> </asp:GridView> 二、绑定数据控件 (连接数据库省略) protected void Button1_Click(object sender, EventArgs e) { StringBuilder query = new StringBuilder();//动态字符串类StringBuilder for (int i = 0; i < GridView1.Rows.Count; i++) { GridViewRow row = GridView1.Rows[i]; string value1 = ((TextBox)row.Cells[1].FindControl("txtName")).Text.Replace("'", "''"); string value2 = ((TextBox)row.Cells[2].FindControl("txtSex")).Text.Replace("'", "''"); string value3 = ((TextBox)row.Cells[3].FindControl("txtState")).Text.Replace("'", "''"); string value4 = ((TextBox)row.Cells[4].FindControl("txtPhone")).Text.Replace("'", "''"); string value5 = ((TextBox)row.Cells[5].FindControl("txtAddress")).Text.Replace("'", "''"); string value = GridView1.DataKeys[i].Value.ToString(); query.Append("UPDATE [tb_mrEmp] SET [au_lname] = '")//追加字符串 .Append(value1).Append("' , [sex] = '") .Append(value2).Append("' , [state] = '") .Append(value3).Append("' , [phone] = '") .Append(value4).Append("' , [address] = '") .Append(value5).Append("' WHERE [ID] = '") .Append(value).Append("';\n"); } conn.Open();//打开数据库连接 SqlCommand command = new SqlCommand(query.ToString(), conn); if (Convert.ToInt32(command.ExecuteNonQuery()) > 0)//判断更新操作是否成功 { Response.Write("<script>alert('一次修改数据成功!')</script>"); }//codego.net/15/1/1/ else { Response.Write("<script>alert('一次修改数据失败!')</script>"); } conn.Close();//关闭数据库连接 bind();//更新后重新绑定下数据 }
引用 8 楼 www_qiangjinhao 的回复:
编辑绑定GridView所有行中的数据 一、GridView设置 <asp:GridView ID="GridView1" Runat="server" DataKeyNames="ID" AutoGenerateColumns="False" AllowPaging="True" onpageindexchanging="GridView1_PageIndexChanging" PageSize="5" Width="682px" CellPadding="3" GridLines="Horizontal" BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px"> <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" /> <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" /> <Columns> <asp:BoundField DataField="ID" HeaderText="编号" /> <asp:TemplateField SortExpression="au_lname" HeaderText="教师姓名"> <ItemTemplate> <asp:TextBox Runat="server" Text='<%# Bind("au_lname") %>' ID="txtName" Height="22px" Width="90px"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="教师性别"> <ItemTemplate> <asp:TextBox Runat="server" Text='<%# Bind("sex") %>' ID="txtSex" Height="22px" Width="54px"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="教师学历"> <ItemTemplate> <asp:TextBox ID="txtState" runat="server" Text='<%# Bind("state") %>' Height="22px" Width="97px"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="电话号码"> <ItemTemplate> <asp:TextBox ID="txtPhone" runat="server" Text='<%# Bind("phone") %>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="家庭地址"> <ItemTemplate> <asp:TextBox ID="txtAddress" runat="server" Text='<%# Bind("address") %>'></asp:TextBox> </ItemTemplate> </asp:TemplateField> </Columns> <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" /> <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" /> <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" /> <AlternatingRowStyle BackColor="#F7F7F7" /> </asp:GridView> 二、绑定数据控件 (连接数据库省略) protected void Button1_Click(object sender, EventArgs e) { StringBuilder query = new StringBuilder();//动态字符串类StringBuilder for (int i = 0; i < GridView1.Rows.Count; i++) { GridViewRow row = GridView1.Rows[i]; string value1 = ((TextBox)row.Cells[1].FindControl("txtName")).Text.Replace("'", "''"); string value2 = ((TextBox)row.Cells[2].FindControl("txtSex")).Text.Replace("'", "''"); string value3 = ((TextBox)row.Cells[3].FindControl("txtState")).Text.Replace("'", "''"); string value4 = ((TextBox)row.Cells[4].FindControl("txtPhone")).Text.Replace("'", "''"); string value5 = ((TextBox)row.Cells[5].FindControl("txtAddress")).Text.Replace("'", "''"); string value = GridView1.DataKeys[i].Value.ToString(); query.Append("UPDATE [tb_mrEmp] SET [au_lname] = '")//追加字符串 .Append(value1).Append("' , [sex] = '") .Append(value2).Append("' , [state] = '") .Append(value3).Append("' , [phone] = '") .Append(value4).Append("' , [address] = '") .Append(value5).Append("' WHERE [ID] = '") .Append(value).Append("';\n"); } conn.Open();//打开数据库连接 SqlCommand command = new SqlCommand(query.ToString(), conn); if (Convert.ToInt32(command.ExecuteNonQuery()) > 0)//判断更新操作是否成功 { Response.Write("<script>alert('一次修改数据成功!')</script>"); }//codego.net/15/1/1/ else { Response.Write("<script>alert('一次修改数据失败!')</script>"); } conn.Close();//关闭数据库连接 bind();//更新后重新绑定下数据 }
不明白这段代码跟我的问题有什么关系?
xttxqjfg 2015-04-09
  • 打赏
  • 举报
回复
引用 7 楼 starfd 的回复:
RowCommand 你这个明显回发了啊
需要怎么修改禁止回发?
  • 打赏
  • 举报
回复
RowCommand 你这个明显回发了啊
xttxqjfg 2015-04-08
  • 打赏
  • 举报
回复
引用 5 楼 starfd 的回复:
Response.Redirect还是新开页面_blank?
在gridview的RowCommand实现的一个函数,使用的是window.open StringBuilder s = new StringBuilder(); s.Append("<script language=javascript>"); s.Append("var a=window.open('Second.aspx?sid=" + id + "');"); s.Append("</script>"); Type cstype = this.GetType(); ClientScriptManager cs = Page.ClientScript; string sname = ""; if (!cs.IsStartupScriptRegistered(cstype, sname)) cs.RegisterStartupScript(cstype, sname, s.ToString());
  • 打赏
  • 举报
回复
Response.Redirect还是新开页面_blank?
xttxqjfg 2015-04-07
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
楼主是获取不到 第一列,第二列的值吧
值只有在每次进页面的时候可以获取到,但是点击跳转到另外一个页面后,原页面的gridview也没有值了。。
xttxqjfg 2015-04-07
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
不明觉厉,你这个点击刷新页面了?然后没设定!IsPostBack?
点击后就直接跳转到另外一个页面了,根本没有刷新操作啊?原页面我根本没有做刷新操作。。
exception92 2015-04-07
  • 打赏
  • 举报
回复
楼主是获取不到 第一列,第二列的值吧
  • 打赏
  • 举报
回复
不明觉厉,你这个点击刷新页面了?然后没设定!IsPostBack?

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧