我的页面都是 ajax读取数据的.现在有一个问题就是
我这个页面上有一个文本字段,公用信息.
旁边有个按钮 点击保存 它要执行保存动作,但我的页面不能用服务器按钮,不然会刷新页面,破坏原来的一切状态...
应该怎么解决呢
我这个页面上有一个文本字段,公用信息.
旁边有个按钮 点击保存 它要执行保存动作,但我的页面不能用服务器按钮,不然会刷新页面,破坏原来的一切状态...
应该怎么解决呢
解决方案 »
- AspxGridView控件中如何取得某行某列的值啊?
- urlmapping映射问题
- 求三层结构中分页的解决方法
- 我想问下???紧急。
- 关于IIS的会话时间问题
- aspnetpager查找分页后编辑问题
- 请教一个DataGrid的问题(初学)
- 请做过聊天室的高手进来指导一下!
- 一个变量用法的怪问题?请看一下!谢谢
- 404 Not Found 的问题
- GridView1.Rows[GridView1.EditIndex].Cells[0].Text = ((TextBox)GridView1.Rows[GridView1.EditIndex].Controls[0].Controls[0]).Text
- 水晶报表执行交叉表的时候,出现乱码问题,sql数据库的中文数据都乱码,怎么解决,请指教
那么可以考虑一下使用客户端回调来解决.当然,如果你可以确保用js写出跨浏览器的ajax应用,当然也可以直接用js去写.
public void RaiseCallbackEvent(string eventArgument)
{
//TextBox1y就是文本字段 比如说现在有篇文章内容
string x=this.TextBox1.Text;
//但是这里TextBox1.Text是取不到值的 }
/**/
/// <summary>
/// 该方法是返回回调的结果给客户端
/// </summary>
/// <returns></returns>
public string GetCallbackResult()
{
return Result;
}
1、
在App_Code下加一个Database.mdf
里边建个表Table1,两列,一个自增Primary Key,另一个nvarchar(MAX),列名:content
web.config里是这样:<connectionStrings>
<add name="DatabaseConnectionString1" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>2、建个存数据的Web Service[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService { public WebService () { //如果使用设计的组件,请取消注释以下行
//InitializeComponent();
} [WebMethod]
public string SaveTest(string content) {
string ret = string.Empty;
using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DatabaseConnectionString1"].ConnectionString))
{
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("insert into Table1(content) values(@content)", conn);
cmd.Parameters.Add("content", content);
conn.Open();
int affectedRows = cmd.ExecuteNonQuery();
ret = affectedRows == 1 ? "保存成功" : "保存失败";
}
return ret; }
}.aspx<head runat="server">
<title>无标题页</title>
<script language="javascript" type="text/javascript">
// <!CDATA[function Button1_onclick() {
var content = $get('TextArea1').value;
WebService.SaveTest(content, OnSuccess);
}
function OnSuccess(result)
{
alert(result);
}// ]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/WebService.asmx" />
</Services>
</asp:ScriptManager>
<div>
<textarea id="TextArea1" cols="100" rows="50"></textarea><input id="Button1" type="button" value="Save Test" onclick="return Button1_onclick()" />
</div>
</form>
</body>
cmd.Parameters.Add("content", content);
应该是
cmd.Parameters.AddWithValue("content", content);怪的是刚才居然能存进去,呵呵。
Add()方法里并没有这种重载啊,怪了~
那就玩Callback,反正都那么回事,还是那个数据库,我又试了一下。呼~我发现有时热心过头了:-)
public partial class Default3 : System.Web.UI.Page , ICallbackEventHandler
{
private string result = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.ClientScript.IsClientScriptBlockRegistered(this.GetType(), "scriptKey"))
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "scriptKey", "function MyCallback(content, context) {" + Page.ClientScript.GetCallbackEventReference(this, "content", "OnSuccess", "context") + "}", true);
} #region ICallbackEventHandler 成员 public string GetCallbackResult()
{
return result;
} public void RaiseCallbackEvent(string eventArgument)
{
string ret = string.Empty;
using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DatabaseConnectionString1"].ConnectionString))
{
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("insert into Table1(content) values(@content)", conn);
cmd.Parameters.Add("content", eventArgument);
conn.Open();
int affectedRows = cmd.ExecuteNonQuery();
ret = affectedRows == 1 ? "保存成功" : "保存失败";
}
result = ret;
} #endregion
}<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<script language="javascript" type="text/javascript">
// <!CDATA[function OnSuccess(result)
{
alert(result);
}function Button2_onclick() {
MyCallback(document.getElementById('TextArea1').value, null);
}
// ]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/WebService.asmx" />
</Services>
</asp:ScriptManager>
<div>
<textarea id="TextArea1" cols="100" rows="50"></textarea>
<input id="Button2" type="button" value="Callback Test" onclick="return Button2_onclick()" />
</div>
</form>
</body>
</html>
我一开始没有考虑到将它作为参数...以为是文本太长了...现在可以了...tks