读书人

ViewState有关问题 高手指教

发布时间: 2012-06-10 14:03:15 作者: rapoo

ViewState问题 高手指教

JScript code
<script type="text/javascript" language="javascript">        function txt_onkeydown() {            if (event.keyCode == 13) {                <%bandRpt_ISDetail();%>            }        }    </script>
C# code
protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                                       DataTable dtInS = new DataTable();                        dtInS.Columns.Add(new DataColumn("stockName"));                        dtInS.Columns.Add(new DataColumn("scanNo"));                        dtInS.Columns.Add(new DataColumn("Num"));                        dtInS.Columns.Add(new DataColumn("Uint"));                }            }        } public void bandRpt_ISDetail()        {            DataTable dt = (DataTable)ViewState["dtInS"];            string scanNo = txt_scan_No.Text;            if (!string.IsNullOrEmpty(scanNo))            {                DataRow dr = dt.NewRow();                dr["stockName"] = hf_stockName.Value;                dr["Uint"] = "台";                dr["Num"] = "1";                dr["scanNo"] = scanNo;                dt.Rows.Add(dr);                                ViewState["dtInS"] = dt;                rpt_ISDetail.DataSource = dt;                rpt_ISDetail.DataBind();            }        }

每次我的打他table都被清空了 扫描原因啊

[解决办法]
楼主,是这样的,当asp.net在编译的时候,会把你的小脚本代码段,<%bandRpt_ISDetail();%>编译成私有字段,然后呢,在页面Render的时候呢,会去Render这些字段,这些字段包括服务器控件,页面的表达式和小脚本代码段,意思是你页面加载的时候,已经执行了你的bandRpt_ISDetail方法,所以,当你在页面上进行if(event.keyCode == 13) {<%bandRpt_ISDetail();%>}毫无意义,最后还是楼主你对asp.net的概念理解可能不对,多多学习

读书人网 >asp.net

热点推荐