现在的位置: 首页 > 综合 > 正文

TextBox获得焦点失去焦点也可引发服务器端事件(webform程序)

2013年02月06日 ⁄ 综合 ⁄ 共 2626字 ⁄ 字号 评论关闭

使用javascript脚本触发服务器端的按钮控件,在按钮控件里写与后台数据交互的代码。
TextBox获取焦点,失去焦点的脚本中,触发服务器端的控件。
使TextBox在编号和名称中自由切换。

--------下面示例只说明其实现方法,是在开发环境中的部分代码-------------------------
下面的例子中,实现TextBox获得焦点后显示编号,失去焦点显示名称,还提供了TextBox的右键帮助,和帮助按钮功能。
页面上放置txtKMBH1文本框,帮助按钮btnKMBH1Help,隐含按钮控件btnKMBH,隐含的存放编号的TextBox控件,
<asp:textbox onkeypress="InputNum()" id="txtKMBH1" runat="server" Width="96px" onmousedown="HelpMouseRight('btnKMBH1Help')" onblur="textboxonblur()" onfocus="textboxonfocus()"></asp:textbox>
<INPUT class="HelpBtn" id="btnKMBH1Help" onclick="KmzdHelp('hdnProcessid','hdnDwbh','hdnKjnd','txtKMBH1','hdnKMBH1')" type="button" value="…" name="Button1">
<INPUT id="hdnKMBH1" style="WIDTH: 1px; HEIGHT: 20px" type="hidden" size="1" name="Hidden1" runat="server">
<asp:button id="btnKMBH" runat="server" Width="1px" cssClass="OperBtn" Text="help"></asp:button>
脚本代码:
//右键帮助,触发帮助按钮的click事件
function HelpMouseRight(srcName)
{
 if(event.button==2)
 {
  document.all(srcName).click();   //触发页面上的帮助按钮的click事件
 }
}
//失去焦点事件
function textboxonblur()
{
 document.all("btnKMBH").click(); //触发页面上隐含的与后台交互的按钮的click事件
}
//获得焦点事件
function textboxonfocus()
{
 document.all("txtKMBH1").value=document.all("hdnKMBH1").value; //获取焦点时把编号复制给获得焦点的TextBox
}
//帮助脚本
function KmzdHelp(vProcEdit,vDwEdit,vYear,vNameEdit,vCodeEdit)
{
 var isProcessId = document.all(vProcEdit).value;
 var dwbh=document.all(vDwEdit).value;
 var year=document.all(vYear).value;
 var vsWhere=" ZWKMZD_DWBH IS NULL OR ZWKMZD_DWBH='' OR ZWKMZD_DWBH LIKE '%"+dwbh+"%'";
 var vsHelpInfo=helpParamUse(isProcessId,year,"*LS*.ZWKMZD*YY*","ZWKMZD_KMBH","ZWKMZD_KMMC","ZWKMZD_YEFX","ZWKMZD_JS","ZWKMZD_MX",vsWhere,"@ZW_KMSTRU","S1","科目帮助","0","")
 if(!vsHelpInfo) return false;
 if(isEmpty(vsHelpInfo.helpNum)) return false;
 //document.all(vKmfx).value=vsHelpInfo.helpISN; //科目方向
 document.all(vCodeEdit).value=vsHelpInfo.helpNum; //科目编号
 document.all(vNameEdit).value=vsHelpInfo.helpName; //科目名称
 return;
}

隐含按钮控件btnKMBH的click()代码:用于与后台数据交互。
private void btnKMBH_Click(object sender, System.EventArgs e)
  {
   Database db = new Database();
   db.IsSql=true;
   SqlDataReader reader = null;
   string vSql="select zwkmzd_kmbh,zwkmzd_kmmc from zwkmzd"+this.hdnKjnd.Value+" where zwkmzd_kmbh='"+this.txtKMBH1.Text+"'";
   try
   {
    db.RunProc(vSql,out reader);
    while(reader.Read())
    {
     this.txtKMBH1.Text = Convert.ToString(reader.GetValue(reader.GetOrdinal("zwkmzd_kmmc")));
     this.txtKMBH2.Text = Convert.ToString(reader.GetValue(reader.GetOrdinal("zwkmzd_kmbh")));
     this.hdnKMBH1.Value = Convert.ToString(reader.GetValue(reader.GetOrdinal("zwkmzd_kmbh")));
    }
   }
   catch(Exception ex)
   {
    throw ex;
   }
   finally
   {
    if(reader!=null) reader.Close();
    if(db!=null) db.Close();
   }
  }
注:该示例只是在使用过程中的代码,只用来说明实现方法。

抱歉!评论已关闭.