请教高手一个.NET开发的问题
就是在前台窗体界面上有3个TEXTBOX其中TEXTBOX1和TEXTBOX2无论哪个发生变化就会引起TEXTBOX3的值的改变,也就是说TEXTBOX3的值是自动获得的,是当TEXTBOX1和TEXTBOX2都有值时,从后台数据库获得TEXTBOX3的值。请问高手们怎么实现? --------------------编程问答-------------------- 沙发舒服.用自动传回... --------------------编程问答-------------------- 查库?ajax-UpdatePanel
textchange写代码 --------------------编程问答-------------------- 怎么传?具体点可以吗?坐沙发的人。 --------------------编程问答-------------------- 怎么说得这么的拗口 --------------------编程问答-------------------- 是说在页面上输入文本框1和2的值后改变文本框3的值吗? --------------------编程问答-------------------- <asp:textbox id="TextBox1" ontextchanged="TextBox_TextChanged" ...
<asp:textbox id="TextBox2" ontextchanged="TextBox_TextChanged" ...
protected void TextBox1_TextChanged(object sender,
{
TextBox txt = sender as Textbox;
if(txt.ID == "TextBox1") {
// 访问数据库
// txt.Text
// TextBox3.Text = <<newValueFormDb>>
}
else if(txt.ID == "TextBox2") {
// ...
}
}
--------------------编程问答-------------------- 将textbox1和2的autopostback设置为true,然后在各自的textchange事件中写对应的处理方式,这样可以达到你的效果,不过页面会刷新 --------------------编程问答-------------------- 说的不清楚!如果是做加减运算这样简单的事的话用不着数据库了直接就可以js做了,如果做报表一样复杂的事,那你就得用ajax吧(b/s)! --------------------编程问答-------------------- this.textBox1.TextChanged += new System.EventHandler(this.textBox2_TextChanged);
this.textBox2.TextChanged += new System.EventHandler(this.textBox2_TextChanged);
private void textBox2_TextChanged(object sender, EventArgs e)
{
this.textBox3.Text = this.textBox1.Text.Trim() + this.textBox2.Text.Trim();
} --------------------编程问答-------------------- 嗯,是的,还是楼上的理解力强。 --------------------编程问答-------------------- 如果想不刷新的话,简单一点可以放置一个ajax:UpdatePanel 在页面上 --------------------编程问答--------------------
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" OnTextChanged="TextBox2_TextChanged"></asp:TextBox>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
--------------------编程问答-------------------- 不能刷新页面,比如:文本框一是证件类型,文本框二是证件号,那么文本框三就是要根据证件类型和证件号获得这个人的姓名。必须从数据库表里获得。 --------------------编程问答-------------------- TextBox3还是Lanbel3?一个接收用户录入的文本框总是自动根据后台刷新(用户体验糟透了),这个问题提得让人觉得回答起来极其不舒服。 --------------------编程问答-------------------- winForm还是webForm?
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
this.TextBox3.Text = "从数据库取值";
}
protected void TextBox2_TextChanged(object sender, EventArgs e)
{
this.TextBox3.Text = "从数据库取值";
}
}
webForm最好异步取一下数据,否则效果不太爽.. --------------------编程问答-------------------- AutoPostBack="True" --------------------编程问答-------------------- 判断一下TEXTBOX1和TEXTBOX2是否都有值时
--------------------编程问答-------------------- Night_Elf(风暴虫):
如果想不刷新的话,简单一点可以放置一个ajax:UpdatePanel 在页面上
请问风暴虫,怎么实现?给点代码可以吗?呵呵 --------------------编程问答-------------------- 只能说在不过分追求效率的情况下,可以使用updatepanel来达到相应的目的
本来微软给你客户端强行加载那么多script这速度本身就是个问题 --------------------编程问答-------------------- maek
up --------------------编程问答--------------------
6楼的这个不就行了。何必弄得那么复杂呢 --------------------编程问答--------------------
代码就是“堕落的青春”给的那段 --------------------编程问答-------------------- 晕。。用JS多好。。还用回传。。晕倒。 --------------------编程问答-------------------- 呵呵,谢谢各位高手。我试一下哈。。。 --------------------编程问答-------------------- 嘎嘎 --------------------编程问答-------------------- --------------------编程问答-------------------- WEB的话用 updatepanel,示例代码12楼写好了,不过要运行在 VS2005以上(含) --------------------编程问答-------------------- web form就使用javascript,
win from就使用事件好了. --------------------编程问答-------------------- 画面Load时,Textbox3是从数据库里取值,那两个控件改变时Textbox3改变可以用JS做。 --------------------编程问答-------------------- 是web form,使用javascript怎么写? --------------------编程问答-------------------- 要把从数据库里取的值显示在Textbox3给用户看 --------------------编程问答-------------------- HELP ME!高手们! --------------------编程问答-------------------- 用js写一个函数,让Txt1和Txt2的OnTextChanged时,再判断Txt1或Txt2的值,根据需求再来给Txt3赋值 --------------------编程问答-------------------- --------------------编程问答-------------------- up --------------------编程问答-------------------- 什么语言也不说清楚 --------------------编程问答-------------------- 具体我的思路是:
TEXTBOX1和TEXTBOX2分别对this.textBox2.TextChanged 添加各自的方法,
方法作用是判断如果TEXTBOX1和TEXTBOX2有且仅有一个不空,那么TEXTBOX3的内容重新赋值(值是来自不空的那个)。
如果TEXTBOX1和TEXTBOX2均不空则从数据库获得,
下面是我用vs.net2005 做的win应用程序代码片段web的雷同,仅供参考。
this.textBox2.TextChanged += new System.EventHandler(TextChanged);
this.textBox1.TextChanged += new System.EventHandler(TextChanged);
private void TextChanged(object sender, EventArgs e)//两个事件均加入这个方法
{
if (this.textBox2.Text != "" && this.textBox1.Text != "")
{
this.textBox3.Text = "从数据库得到数据";//连接数据库得到数据填入3中
}
else if (this.textBox2.Text == "" && this.textBox1.Text == "")
{
//do nothing
}
else
{
if (this.textBox2.Text != "")//如果1和2原来都有数据,那么这时你改变2让2变空因此
//这时3的数据应该是1的不是2的
{
this.textBox3.Text = textBox2.Text;
}
else
{
this.textBox3.Text = textBox1.Text;
}
}
} --------------------编程问答-------------------- 多谢各位热心的高手们,我是刚刚往深处学习这个玩意,所以会慢一些,高手们理解一下哈。。。 --------------------编程问答-------------------- JF --------------------编程问答-------------------- 赋值用js 读取数据用ajax --------------------编程问答-------------------- 用JS判断,那个啥的,在JS中判断两个字符串是咋搞的呀? --------------------编程问答-------------------- void Cehck()
{
if(textbox1.Text == "")//textbox1值为空
{
if(textbox2.Text == "")//textbox2值为空
{
//下面自已写吧。
}
}
} --------------------编程问答-------------------- 反推
void Check()
{
if(textbox1.Text!="")//textbox1值不为空
{
if(textbox2.Text != "")//textbox2值不为空
{
//哇哈哈哈,终于写出来了!!!!
}
}
} --------------------编程问答-------------------- 哦耶,楼主要的是AJAX。 --------------------编程问答-------------------- C#代码? --------------------编程问答-------------------- 顶。等牛人来回答。 --------------------编程问答-------------------- 我就是牛人,但是我不回答。 --------------------编程问答-------------------- 可以用JS+XMLHTTP异步刷新 --------------------编程问答-------------------- 就是在前台窗体界面上有3个TEXTBOX其中TEXTBOX1和TEXTBOX2无论哪个发生变化就会引起TEXTBOX3的值的改变,也就是说TEXTBOX3的值是自动获得的,
==
这个容易实现
是当TEXTBOX1和TEXTBOX2都有值时,从后台数据库获得TEXTBOX3的值。请问高手们怎么实现?
==
这个什么意思? --------------------编程问答-------------------- 我的开发环境是VS2005,语言是C#,现在我对AJAX和JS都不熟悉。
下面回答amandag提出的问题:
是当TEXTBOX1和TEXTBOX2都有值时,从后台数据库获得TEXTBOX3的值。请问高手们怎么实现?
==
这个什么意思?
就是TextBox3的内容随着TextBox1和TextBox2内容的变化而改变。
因为TextBox3的值是把TextBox1和TextBox2的值作为查找条件从数据库中获得的,不知道我这次说清楚没有?呵呵。 --------------------编程问答-------------------- <asp:textbox id="TextBox1" ontextchanged="TextBox_TextChanged" ...
<asp:textbox id="TextBox2" ontextchanged="TextBox_TextChanged" ...
protected void TextBox_TextChanged(object sender,
{
if (TextBox1.text!="" && TextBox2.text!="")
{
TextBox3.text=GetTextBox3Value();
}
}
--------------------编程问答-------------------- 貌似会刷新页面的吧 --------------------编程问答-------------------- 反正就是要连接数据库的,就用C#做吧,用我37楼给的方法绝对可以!! --------------------编程问答-------------------- 问题解决了吧!好多人回复啦! --------------------编程问答-------------------- 哎!看来我还是没有把问题描述详细,要不怎么会有这么多人没有理解我的意思呢?
问一下 *** 思乡 ***
<asp:textbox id="TextBox1" ontextchanged="TextBox_TextChanged" ...
<asp:textbox id="TextBox2" ontextchanged="TextBox_TextChanged" ...
protected void TextBox_TextChanged(object sender,
{
if (TextBox1.text!="" && TextBox2.text!="")
{
TextBox3.text=GetTextBox3Value();
}
}
由这段代码得到TextBox3.text的值后,怎么把这个值显示到窗体界面让用户看到呢?
--------------------编程问答-------------------- 只要给Textbox3.TEXT
赋值 界面就可疑看到 --------------------编程问答-------------------- 我明白楼主的意思了,由这段代码得到TextBox3.text的值后,怎么把这个值显示到窗体界面让用户看到呢?
这个你是担心它不会自己刷新界面,web确实存在这个问题,
解决的办法,我有两个:
1是:
注意空间一般在事件触发时都有返回提交到服务器处理的一项属性,好象是auto什么什么的你把它设置为true(注意TextBox1和 TextBox2的都要设置true)然后如果textbox1或 TextBox2变化了整个页面会刷新,然后text3就跟着变了,用户也就跟着看到变化.
方法2是:
你在这个方法最后加一句强制页面重新加载.
this.textBox2.TextChanged += new System.EventHandler(TextChanged);
this.textBox1.TextChanged += new System.EventHandler(TextChanged);
private void TextChanged(object sender, EventArgs e)//两个事件均加入这个方法
{
if (this.textBox2.Text != "" && this.textBox1.Text != "")
{
this.textBox3.Text = "从数据库得到数据";//连接数据库得到数据填入3中
}
else if (this.textBox2.Text == "" && this.textBox1.Text == "")
{
//do nothing
}
else
{
if (this.textBox2.Text != "")//如果1和2原来都有数据,那么这时你改变2让2变空因此
//这时3的数据应该是1的不是2的
{
this.textBox3.Text = textBox2.Text;
}
else
{
this.textBox3.Text = textBox1.Text;
}
}
Page_Load(this, EventArgs new ()) // 这句是再次刷新页面,当然我可能写的不对,但是思想是对的,
}
如果是win程序那么就存在页面刷新的问题了 --------------------编程问答-------------------- 对不起字打错了
"1是:
注意空间一般"
改为
1是:
注意控件一般 --------------------编程问答-------------------- 看到了是textbox的AutoPostBack属性设置为true
你把textbox1和textbox2的AutoPostBack属性都设置为true --------------------编程问答-------------------- 没发现有什么难的方法很多的
--------------------编程问答-------------------- 我都看了一下,没一个答案是正确的,有的说对了,但太概括了,这个一定要用Ajax,用javascript的事件,用c#的一般处理程序文件(括展名为ashx)来传数据,具体代码我现在没时间写,联系我QQ 93022019 --------------------编程问答-------------------- 我觉得可以利用javascript调用webserver的方法~~~很简单~~~~ --------------------编程问答-------------------- webserver代码:
using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Web.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Web.Script.Services;
/// <summary>
///WebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {
public WebService () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string Getid(string fname,string lname)
{
using (SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["Personal"].ConnectionString))
{
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "select [au_id] from [authors] where [au_fname]=@fname and [au_lname]=@lname";
comm.Parameters.Add("@fname",SqlDbType.NVarChar,50).Value= fname;
comm.Parameters.Add("@lname", SqlDbType.VarChar,50).Value = lname;
conn.Open();
using (SqlDataReader dr = comm.ExecuteReader(CommandBehavior.SingleResult))
{
while (dr.Read())
{
return dr["au_id"].ToString();
}
}
}
return null;
}
}
javascript代码:
/// <reference name="MicrosoftAjax.js"/>
function txonblur()
{
// var fname=$get("<%=TextBox1.ClientID%>").value;
// var lname=$get("<%=TextBox2.ClientID%>").value;
var fname=$get("TextBox1").value;
var lname=$get("TextBox2").value;
if(fname=="" || lname=="")
{
return;
}
WebService.Getid(fname,lname,onsuccess,OnFailed)
}
function onsuccess(result)
{
if(result==null)
{
$get("TextBox3").value="没有结果!";
}
else
{
$get("TextBox3").value=result;
}
}
function OnFailed(error)
{
var stackTrace=error.get_stackTrace();
var message=error.get_message();
var statusCode=error.get_statusCode();
var exceptionType=error.get_exceptionType();
var timedout=error.get_timedOut();
var ReltElem=$get("Results");
ReltElem.innerHTML=
"堆栈追踪:" + stackTrace + "<br/>" +
"服务错误:" + message + "<br/>" +
"状态码:" + statusCode + "<br/>" +
"异常类型:" + exceptionType + "<br/>" +
"超时:" + timedout;
}
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
前台页面代码:
--------------------编程问答-------------------- 这样的总是也要指名高手。汗。我的两个三角裤都N个方法。 --------------------编程问答-------------------- 学习,学习哈 --------------------编程问答--------------------
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="javascript.js" />
</Scripts>
<Services>
<asp:ServiceReference Path="WebService.asmx" />
</Services>
</asp:ScriptManager>
<span>First Name:</span><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<span>Last Name:</span><asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
<span>ID:</span>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<br />
<%-- <input id="TextBox1" type="text" />
<input id="TextBox2" type="text" onblur="txonblur()" />
<input id="TextBox3" type="text" />--%>
</div>
</form>
</body>
</html>
这两个textbox 的事件把 --------------------编程问答-------------------- 这个问题超简单.在TEXTBOX中写上onchange事件.用javascript处理计算问题就行了! --------------------编程问答-------------------- ashx、webservice都出来了要那么复杂吗?
就12楼的代码稍微改一下就可以了。 --------------------编程问答-------------------- 呵呵,高手们都辛苦了哈,特别是62楼的dushouke,代码给出的这么具体,实在是非常感谢,但是我得好好研究一下才能看得懂。68楼的AlphaGroup说就12楼的代码稍微改一下就可以了,能告诉我怎么改吗?
--------------------编程问答--------------------
学习了! --------------------编程问答--------------------
自己写的。页面刷新一次。
protected void Page_Load(object sender, EventArgs e)
{
}
protected void txtName_TextChanged(object sender, EventArgs e)
{
}
protected void txtNum_TextChanged(object sender, EventArgs e)
{
if (txtName.Text.Trim() == "" && txtNum.Text.Trim() == "")
{
txtClass.Text = "信息不全,无法识别班级!";
}
else
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=3506-0e2defef70;Initial Catalog=students;Integrated Security=True;Pooling=False";
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select class from stu_tb where name='" + txtName.Text.Trim() + "'";
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
SqlDataReader rd = cmd.ExecuteReader ();
rd.Read();
if (rd.HasRows)
{
txtClass.Text = rd["class"].ToString().Trim();
}
else
{
txtClass.Text = "你的信息不存在!";
}
rd.Close();
}
}
protected void txtClass_TextChanged(object sender, EventArgs e)
{
} --------------------编程问答-------------------- 哎,哥们如何提问也很重要,问得很难受,不不想回答
补充:.NET技术 , ASP.NET