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

高手们快来帮小弟一把,一个疑难有关问题困扰了许久,死人了…就剩20分了

2012-01-24 
高手们快来帮小弟一把,一个疑难问题困扰了许久,急死人了……………………就剩20分了我用datalist的显示“文章主题”,

高手们快来帮小弟一把,一个疑难问题困扰了许久,急死人了……………………就剩20分了
我用datalist的显示“文章主题”,然后单击“详细”后显示内容,是用datalist中SelectedItemTemplate完成的,但是在单击“详细”后整个页面压根就没有显示?
我是通过接收浏览器传值来查询数据并以Datalist显示的
主要代码如下:    
              protected     void     Page_Load(object     sender,     EventArgs     e)    
              {    
                              if     (!Page.IsPostBack)    
                              {      
                                            c_id     =     Convert.ToInt32(Request.QueryString[ "cid "].ToString());    
                                            BindDataList()    
                              }    
 
              }    
 
                        protected     void     BindDataList()     //数据绑定    
              {    
                              SqlConnection     conn     =     userOperate.createconn();    
                              SqlDataAdapter     adp     =     new     SqlDataAdapter();    
                              string     strsql     =     "select     *     from     event         where     c_id= "     +     c_id;    
                              if     (userFlag==1)    
                              {    
                                              strsql     =     "select     *     from     event         where     c_id= "     +     c_id;    
                                              //Response.Write(strsql);    
                              }    
                              else    
                              {    


                                              strsql     +=     "and     e_person= ' "     +     userName     +     " ' ";    
                                              strsql     +=     "order     by     e_time     desc ";    
                              }    
                              adp.SelectCommand     =     new     SqlCommand(strsql,     conn);    
                              DataSet     ds     =     new     DataSet();    
                              adp.Fill(ds,     "MyEvent ");            
                              this.DataList1.DataSource     =     ds.Tables[ "MyEvent "].DefaultView;    
                              this.DataList1.DataBind();    
              }    

 
              protected     void     DataList1_ItemCommand(object     source,     DataListCommandEventArgs     e)    
              {    
                              if     (e.CommandName     == "SelectContent ")             //单击“详细”    
                              {    
                                              DataList1.SelectedIndex     =     e.Item.ItemIndex;    
                              }    
                              else    
                              {    
                                              if     (e.CommandName     == "Close ")         //单击“关闭”    
                                              {    
                                                              DataList1.SelectedIndex     =     -1;    


                                              }    
                              }    
                              BindDataList();    
              }    
}    
补充一下,该datalist绑定纪录是通过前面传值并接收后查询数据库中的相应纪录!
是不是跟这个有关系呢?
我的前台代码都正确,为啥还不能显示呢?请高手指教………………


[解决办法]
问题的原因在于你的DataList1_ItemCommand的最后一句BindDataList();

如果没猜错,这很容易陷入死循环. 你想必并不知道ItemCommand是什么.几乎不会有需要(至少我从来没遇见过)在ItemCommand中把任何语句写在if语句以外,因为触发ItemCommand的机会太多了,难以想象有什么代码需要在所有这些情况下都执行.更难以想象在这个地方再绑定自己,这就造成绑定的时候触发了ItemCommand,而ItemCommand又必然再引起绑定,然后再触发再绑定....死循环.


第2个问题,你的显示明细的代码在哪? 没看见


第3个问题,你的代码一挂上互联网我就该为你的服务器默哀三分钟了,这代码也太危险了~~~

如果我访问你的页面 http://........./...aspx?c_id=#######
假设我把 " 0 or 1=1 ;Drop table [event];-- " 编码以后放在你的#####中,那你的SQL语句就变成:

select * from event where c_id= 0 or 1=1 ;
Drop table [event];-- .......

因为--是注释符合,所以--后面的都忽略掉了

攻击你网站的人可不会跟我这么仁慈^_^ 仅仅把你的一个表给删除了.....说白了就是我随便在地址栏里写我的SQl语句,然后那些语句就在你的数据库里执行了....我爱干吗就干吗,你说呢?

热点排行