相关信息: C#、ASP.Net、SQL2005
我想在TextBox(tbIDNum)失去焦点(onblur)或者改变内容(onchange)时,根据其文本内容从数据库返回其他相关信息填充到页面的其他TextBox中,在读取相信信息之前,我已经对tbIDNum中的文本作了一些客户端验证,尽量保证该数据的有效性,这我已经通过一个验证函数用onchange事件实现了。现在问题是,当客户端验证通过时,我就需要执行下一步的读取数据进行自动填,不知道该如何实现呢?
protected void tbnApply_Click(object sender, EventArgs e)
{
string chkID = checkIDNum(tbIDNum.Text);
string IDCard = tbIDNum.Text;
IDCard.Replace(" ", "");
SqlConnection conID = new SqlConnection();
conID.ConnectionString = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
conID.Open(); SqlDataAdapter adName = new SqlDataAdapter("SELECT * FROM entUser where IDCard = '"+IDCard+"'", conID);
DataSet dsName = new DataSet();
adName.Fill(dsName, "data");
SqlCommand cmdID = new SqlCommand("SELECT RealName FROM entUser WHERE (IDCard = '"+IDCard+"' ) GROUP BY RealName", conID);
SqlDataReader drName = cmdID.ExecuteReader();
if (drName.HasRows == true)
{
try
{
tbName.Text = dsName.Tables["data"].Rows[0][1].ToString();
tbName.Enabled = false;
ddlSex.SelectedIndex = (Convert.ToInt32(dsName.Tables["data"].Rows[0][20]) == 0) ? 1 : 2;
ddlSex.Enabled = false;
}
catch (Exception)
{
}
}
else
{
tbName.Enabled = true;
ddlSex.Enabled = true;
}
drName.Close();
conID.Close();
}<script language="javascript" type="text/javascript">
function checkNum()
{
var IDNum = document.getElementById("tbIDNum").value;
var result = Train.checkIDNum(IDNum).value;
if ((result != "result") && (result != "null"))
alert(result);
}
</script>
这是.aspx中的内容,tbIDNum的onchange事件引用该函数。我是想是否可以在这个函数里面,当(result=="result")就执行上面click中的内容,也可以写一个新的函数执行。这段代码本来是通过点击按钮实现的,现在我想把其放到tbIDNum的相关事件里实现。不知道是否可行呢?
在论坛和其他网站上看过一些信息,有人说这是不可行的,其他也都说是可以通过onblur或onchange实现。请教了!有满意的答案可加分。
我想在TextBox(tbIDNum)失去焦点(onblur)或者改变内容(onchange)时,根据其文本内容从数据库返回其他相关信息填充到页面的其他TextBox中,在读取相信信息之前,我已经对tbIDNum中的文本作了一些客户端验证,尽量保证该数据的有效性,这我已经通过一个验证函数用onchange事件实现了。现在问题是,当客户端验证通过时,我就需要执行下一步的读取数据进行自动填,不知道该如何实现呢?
protected void tbnApply_Click(object sender, EventArgs e)
{
string chkID = checkIDNum(tbIDNum.Text);
string IDCard = tbIDNum.Text;
IDCard.Replace(" ", "");
SqlConnection conID = new SqlConnection();
conID.ConnectionString = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
conID.Open(); SqlDataAdapter adName = new SqlDataAdapter("SELECT * FROM entUser where IDCard = '"+IDCard+"'", conID);
DataSet dsName = new DataSet();
adName.Fill(dsName, "data");
SqlCommand cmdID = new SqlCommand("SELECT RealName FROM entUser WHERE (IDCard = '"+IDCard+"' ) GROUP BY RealName", conID);
SqlDataReader drName = cmdID.ExecuteReader();
if (drName.HasRows == true)
{
try
{
tbName.Text = dsName.Tables["data"].Rows[0][1].ToString();
tbName.Enabled = false;
ddlSex.SelectedIndex = (Convert.ToInt32(dsName.Tables["data"].Rows[0][20]) == 0) ? 1 : 2;
ddlSex.Enabled = false;
}
catch (Exception)
{
}
}
else
{
tbName.Enabled = true;
ddlSex.Enabled = true;
}
drName.Close();
conID.Close();
}<script language="javascript" type="text/javascript">
function checkNum()
{
var IDNum = document.getElementById("tbIDNum").value;
var result = Train.checkIDNum(IDNum).value;
if ((result != "result") && (result != "null"))
alert(result);
}
</script>
这是.aspx中的内容,tbIDNum的onchange事件引用该函数。我是想是否可以在这个函数里面,当(result=="result")就执行上面click中的内容,也可以写一个新的函数执行。这段代码本来是通过点击按钮实现的,现在我想把其放到tbIDNum的相关事件里实现。不知道是否可行呢?
在论坛和其他网站上看过一些信息,有人说这是不可行的,其他也都说是可以通过onblur或onchange实现。请教了!有满意的答案可加分。
麻烦各位了!
就是不知道怎么弄,前面的客户端验证我是用的Ajax+js(从MSDN上看的--!)
在onblur事件里添加下面方法 function ToAction(param) {
var form = document.forms["formName"];
form.action = '<%= Url.Content("~/.../Actions?param=") %>' + param;
form.submit();
}
{
CreateXmlhttp();
var dname = document.getElementById('<%=txtDocName.ClientID %>').value;
var url = "Help.aspx?dname="+escape(dname);
xmlhttp.open("get",url,true);
xmlhttp.onreadystatechange=Getname;
xmlhttp.send(null);
}建一个页面。 string name= string.Empty;
if (!IsPostBack)
{
Response.Expires = 0;
Response.CacheControl = "no-cache";
if (Request.QueryString["dname"] != null)
{
string doname = Request.QueryString["dname"].ToString();
string sql = "select Doc_CuName,Doc_LinkName,Doc_product,Doc_Office from tab_document with(nolock) where Doc_CuNo ='" + doname + "'";
name= bll_mother.GetFour(sql);
}
Response.Write(name);
Response.Flush();
Response.End();
}bll_mother.GetFour 方法 public static string GetFour(string sql)
{
string strname = string.Empty;
using (SqlConnection con = new SqlConnection(connstr))
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
using (SqlDataAdapter dr = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
dr.Fill(dt);
System.Text.StringBuilder strId = new System.Text.StringBuilder();
System.Text.StringBuilder strName = new System.Text.StringBuilder();
System.Text.StringBuilder strPost = new System.Text.StringBuilder();
System.Text.StringBuilder strProduct = new System.Text.StringBuilder();
for (int i = 0; i < dt.Rows.Count; i++)
{
strId.Append(dt.Rows[i][0].ToString() + ",");
strName.Append(dt.Rows[i][1].ToString() + ",");
strPost.Append(dt.Rows[i][2].ToString() + ",");
strProduct.Append(dt.Rows[i][3].ToString() + ",");
}
return strname = strId + "/" + strName + "/" + strPost + "/" + strProduct;
}
}
con.Close();
}
}
//你需要返回几个字段就写几个。后面的SQL语句一样
function Getname()
{
if(xmlhttp.readyState==4 || xmlhttp.readyState=="Complete")
{
var Yydb=xmlhttp.responseText;
var text = document.getElementById('<%=txtDocName.ClientID %>').value;
if(Yydb == "///" && text != "")
{
var lable = document.getElementById('<%=Label11.ClientID %>');
lable.innerText = "您输入的医生编号不存在!";
}
else
{
var grrn = Yydb.split("/");
var Yydb_Text = grrn[1].split(",");
var Dname = grrn[0].split(",");
var text = document.getElementById('<%=Select4.ClientID %>');
text.value = Yydb_Text[0];
var text1 =document.getElementById('<%=txtHzkh.ClientID %>');
text1.value = Dname[0]; }
} <asp:TextBox ID="txtDocName" runat="server" class="textbox" onblur="GetYydb()" asp:TextBox>
请问可不可以说下各个代码段放的位置?
第一段是新建一个js文件还是放在aspx里?
Getfour方法是新建一个cs文件来写吗?还是放在原有的cs文件里?