读书人

奇怪的替题

发布时间: 2011-12-26 23:09:58 作者: rapoo

奇怪的为题?
同一个事件用不同的控件进行触发,结果不一样,事件是脚本事件从模态窗口取回一个值,然后触发后台事件给控件赋值,设置断点跟踪发现控件在后台都被赋值了!然而到前台发现,用txtbox引发脚本的时候,可以控件显示刚才的赋值,然而用imgbutton引发的时候却,控件依然是空白的!
代码:
<asp:TextBox ID= "Person_IDTxt " runat= "server " Width= "280px " Length= "20 " onclick= "return showmodule(); "> </asp:TextBox>
<asp:ImageButton ID= "SearchIbtn " runat= "server " ImageUrl= "~/Images/view.gif " OnClientClick= "return showmodule(); "/>

<asp:Button ID= "BindBtn " CssClass= "hideControl " runat= "server " OnClick= "BindBtn_OnClick "
CausesValidation= "false " />
脚本:
<script language= "javascript ">
function showmodule()
{
var Person_ID= window.showModalDialog( "DrugReceivePerson.aspx ", 'popupWindow ', "dialogWidth:450px;dialogHeight:490px; ");
if(Person_ID!=null &&Person_ID!= " " )
{
document.getElementById( 'HFPerson_ID ').value=Person_ID;
document.getElementById( "BindBtn ").click();
}
else
{

}
}
</script>
后台:
public void BindBtn_OnClick(object sender, EventArgs e)
{
try
{
if (Convert.ToString(HFPerson_ID.Value) != null && Convert.ToString(HFPerson_ID.Value) != " ")
{
Person_ID = Convert.ToInt32(HFPerson_ID.Value);
dt = MySearchPerson.PersonInfo_GetNameByPersonID(Person_ID);

foreach (System.Data.DataRow row in dt.Rows)
{
Person_IDTxt.Text = Convert.ToString(row[ "Name "]);

}


}


}
catch { }


}

[解决办法]
我测试过了,要是符合你的意思,嘿嘿,JF,
要加入这句,否则你可以在后台的
protected void Page_Load(object sender, EventArgs e)
{//此处加断点 
}
加断点,会发现,执行BindBtn_OnClick(object sender, EventArgs e)方法之前执行一次Page_Load,执行BindBtn_OnClick之后又执行一次Page_Load,重新加载数据,所以TextBox没有数据,加入这句return false;可以避免此情况发生.

读书人网 >asp.net

热点推荐