有关Session的GridView奇怪的数据绑定问题!

问题描述

有两个页面,分别为A.aspx和B.aspx在A页面中添加一个Dropdownlist1和Button1控件,通过点击Button1,将Dropdownlist1选择后的值赋给一个Session变量,并跳转页面到B.aspxstringtable=DropDownList1.SelectedValue;Session["Table"]=table;Response.Redirect("B.aspx");

在B页面中接收Session,并将其作为SQLserver的SELECT语句中的一个值if(!IsPostBack){selecttable=Session["Table"].ToString();//stringselecttable在后台页面最开头已定义bind();}publicvoidbind(){stringsqlstr="SELECT*FROM["+selecttable+"]WHEREshipID=1;//其余省略}

这样,当点击A页面的按钮就能跳转到B页面,并在GridView中显示所选择的那张表,但问题是当要在B页面对这个表进行编辑时protectedvoidGridView1_RowEditing(objectsender,GridViewEditEventArgse){GridView1.EditIndex=e.NewEditIndex;bind();}

就弹出如下错误:缺少对象或列名,或者对象或列名为空。对于SELECTINTO语句,请确保每列均具有名称。对于其他语句,请查找空的别名。不允许使用定义为""或[]的别名。请添加名称或单个空格作为别名。这是怎么回事呢?望高手解答!!

解决方案

解决方案二:
stringsqlstr="SELECT*FROM["+Session["Table"].ToString()+"]WHEREshipID=1;上面是方法一下面是方法二selecttable=Session["Table"].ToString();//stringselecttable在后台页面最开头已定义if(!IsPostBack){bind();}
解决方案三:
嗯,这样就对了!!谢谢ETstudio!我对if(!IsPostBack)认识的还不够深入!是不是放在里面的值只是暂时的呢?还有个问题想请教一下,书上都说Session比较占内存,不用时要记得释放,我就想用Session.Abandon();但这句话该放在哪里好呢?我试过放在selecttable=Session["Table"].ToString()后,但出现“未将对象引用设置到对象的实例”的错误。
解决方案四:
没有人能回答吗??Session.Abandon();应该放在什么地方啊?或者用别的语句吗?
解决方案五:
顶起来!!
解决方案六:
Session.Remove("KeyName");
解决方案七:
不行,仍然会出现“未将对象引用设置到对象的实例”的错误。
解决方案八:
session传值很容易丢失的,为什么不用URL传
解决方案九:
书上都说Session比较占内存,不用时要记得释放,---------------------------------------------------用户关闭浏览器时,session就自动释放了。

时间: 2024-09-20 00:16:18

有关Session的GridView奇怪的数据绑定问题!的相关文章

传值-请教各位大神关于session和GridView的问题

问题描述 请教各位大神关于session和GridView的问题 想问下大神们,如何将一个页面的session值传到另一个页面的gridview中,这个是关于搜索的,将搜索的值显示到gridview中,如果有其他方法也可以,不一定必须用session,希望各位解答一下,小菜鸟在此感谢各位啦! 解决方案 可以的,session值不需要传递,它一直保存在内存中.除了session还有两个办法,一个是表单值一个是querystring. 这里有个完整的例子带源代码http://www.codeproj

ASP.NET实现对相似页面的后台代码的抽象及动态GridView动态列数据绑定

以下通过一个ASP.NET的Demo,希望能使您加深对多态的理解. 现在的需求是这样子(当然该需求 是借助于最近的项目中碰到的问题),在该系统中的流程管理中,有两个页面,一个显示的是我本人发起的审 批列表,另一个是等待我进行审批的列表,他们的查询以及列表显示和查看审批历史等均一致,唯一不同的是 待审批还有一个可执行审批动作的一列,但是不同的人或者在不同的应用(我在这里假设该系统是有多个应用 的复杂系统)里面获取到列表的列是不一样的,所以需要使用动态列,当然这些数据来源我在这里不赘述,为 便于举例

关于数据绑定的奇怪问题

问题描述 VS2010+C#gridview中利用模板列+SqlDataSource实现绑定,结果出了个奇怪的问题,老说我源中没这个字段RoleID...先上aspx的代码::SqlDataSource代码:<asp:SqlDataSourceID="SqlDataSourceRoleOnly"runat="server"ConnectionString="<%$ConnectionStrings:EmergenEvalConnectionSt

asp.net gridview多页时的批量删除_实用技巧

book_admin.aspx 复制代码 代码如下: <asp:GridView ID="grwBook" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="false" AllowPaging="true" DataKeyNames=

Asp.net简单代码设置GridView自适应列宽不变形实现思路与代码_实用技巧

动态绑定的GridView由于列数不固定,而列又太多(博主做的这个项目有150个左右的字段),这样设置GridView固定宽度就不能满足需求了.为此整理了两种方法来达到GridView自适应列宽不变形的效果. .aspx.cs 复制代码 代码如下: //在GridView的行数据绑定完的事件中设置 protected void gvObjectList_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType

GridView分页怎么做?

问题描述 就类似这个样子->"首页""上一页"12345"下一页""尾页"请问GridView本身自带的分页能实现这个效果么?如果能实现的话代码复杂么?还是要用到第三方控件更好???我知道这个方案貌似很多由于时间有限,我想找最优解(既用起来简单功能又满足需求) 解决方案 解决方案二:我的GridView数据源是帮顶的dataTable解决方案三:用分布控件解决方案四:打错字了,是分页控件引用2楼的回复: 用分布控件 解决

wcf中session被覆盖,而且是不同的机子

问题描述 我把WCF程序发布在服务器,然后两台电脑登录,登录接口是WCF实现的,登录的同时在wcf里写Session['uid'].奇怪的是为什么前一台登录写在服务端的session会被后一台给覆盖掉?两台机上我获取wcf里的Session['uid']全部变成了后一台机子登录时写入的值,这是为什么? 解决方案 解决方案二:加急求助啊,大神们都不知道原因么!解决方案三:不应该吧,贴下代码.解决方案四:引用2楼findcaiyzh的回复: 不应该吧,贴下代码. 业务代码里面比较麻烦,我就写了个简单

gridview的刷新问题

问题描述 这是一个简单的查询功能页面,我使用了1个gridview来进行数据绑定,刚载入页面的时候直接在pageload里面绑定所有的数据进行显示,然后再在查询按钮控件里面添加查询语句,然后再重新用girdview对查询结果进行数据绑定,问题出来了,我点击查询后显示的的确是我要的数据结果,但是我想点击刷新让页面重新初始化数据,就弹出对话框显示重复下单了..我试过用Response.Write("<scriptlanguage='JavaScript'>alert('弹出窗口!');w

gridview为什么不显示数据???高手帮忙看看啊!

问题描述 protectedvoidGridView1_RowCommand(objectsender,GridViewCommandEventArgse){DataTablecart1=newDataTable();if(e.CommandName=="select"){if(Session["shopcart2"]==null){cart1.Columns.Add("商品编号",typeof(string));cart1.Columns.Ad