Ajax Submit后没办法自动完成,请问有其他替代方法吗?

christ2 2007-10-12 03:57:02
如题。

我不想另写或者下载一个自动完成控件,有没有办法通过javascript把TextBox的内容添加到Window的自动完成列表中。
...全文
368 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
christ2 2007-10-17
  • 打赏
  • 举报
回复
自动完成是有点类似Google Search的下拉框,但它是IE自带的功能,虽然不是liujbsir 理解的那样,但还是谢谢你贴了那么多代码。
andyhooo 2007-10-16
  • 打赏
  • 举报
回复
我不会。。
christ2 2007-10-16
  • 打赏
  • 举报
回复
没人懂吗?现在CSDN可真难用啊。
liujbsir 2007-10-16
  • 打赏
  • 举报
回复
后台:


public partial class Control_BMLClass : System.Web.UI.UserControl
{
public int BigClassNo
{
set
{
ddlBigClass.SelectedValue = value.ToString();
}
get
{
return int.Parse(ddlBigClass.SelectedValue);
}
}
public int MidClassNo
{
set
{
ddlMidClass.SelectedValue = value.ToString();
}
get
{

if (Request.Form[ddlMidClass.UniqueID] == null)
{
return 0;
}
else
{
return int.Parse(Request.Form[ddlMidClass.UniqueID].ToString());
}


}
}

public int LitClassNo
{
set
{
ddlLitClass.SelectedValue = value.ToString();
}
get
{

if (Request.Form[ddlLitClass.UniqueID] == null)
{
return 0;
}
else
{
return int.Parse(Request.Form[ddlLitClass.UniqueID].ToString());
}

}
}
protected void Page_Load(object sender, EventArgs e)
{
Ajax.Utility.RegisterTypeForAjax(typeof(AjaxClass));

if (!IsPostBack)
{
initPage();
}
setMidClass();
setLitClass();
}
private void initPage()
{
ddlBigClass.DataSource = AjaxClass.GetBigClassList();
ddlBigClass.DataTextField = "NAME";
ddlBigClass.DataValueField = "NO";
ddlBigClass.DataBind();

ddlBigClass.Attributes.Add("onclick", "midClassResult();");

ddlMidClass.Attributes.Add("onclick", "litClassResult();");

}
private void setMidClass()
{
string midCode = hidMidCode.Value.ToString();
string midName = hidMidName.Value.ToString();
ddlMidClass.Items.Clear();
if (!"".Equals(midCode))
{
string[] allMidCode = midCode.Split(',');
string[] allMidName = midName.Split(',');
string mid = hidMidValue.Value;
ddlMidClass.Items.Clear();
for (int i = 0; i < allMidCode.Length; i++)
{
if (!string.IsNullOrEmpty(allMidCode[i]))
{
ListItem liMid = new ListItem();
liMid.Value = allMidCode[i];
liMid.Text = allMidName[i];
ddlMidClass.Items.Add(liMid);
}

}

ddlMidClass.SelectedValue = mid;
}
}

private void setLitClass()
{
string litCode = hidLitCode.Value.ToString();
string litName = hidLitName.Value.ToString();
ddlLitClass.Items.Clear();
if (!"".Equals(litCode))
{
string[] allLitCode = litCode.Split(',');
string[] allLitName = litName.Split(',');
string lit = hidLitValue.Value;
ddlLitClass.Items.Clear();
for (int i = 0; i < allLitCode.Length; i++)
{
if (!string.IsNullOrEmpty(allLitCode[i]))
{
ListItem liLit = new ListItem();
liLit.Value = allLitCode[i];
liLit.Text = allLitName[i];
ddlLitClass.Items.Add(liLit);
}

}

ddlLitClass.SelectedValue = lit;
}
}
}
liujbsir 2007-10-16
  • 打赏
  • 举报
回复
Ajax函数:
public class AjaxClass
{

public static DataTable GetBigClassList()
{
DataTable dt = new DataTable();
using (DCDatabaseInfo dcDatabaseInfo = new DCDatabaseInfo())
{
// 接続
if (!DADatabase.OpenConnection(dcDatabaseInfo))
{

}
// DB取得

if (!DABigClass.GetBigClassInfo(dcDatabaseInfo, ref dt))
{
DADatabase.CloseConnection(dcDatabaseInfo);


}
DADatabase.CloseConnection(dcDatabaseInfo);
}
// 成功
return dt;
}
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.Read)]
public static DataSet GetMidClassList(int bigClassNo)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable("MIDCLASS");

using (DCDatabaseInfo dcDatabaseInfo = new DCDatabaseInfo())
{
// 接続
if (!DADatabase.OpenConnection(dcDatabaseInfo))
{
}
// DB取得

if (!DAMidClass.GetMidClassInfo(dcDatabaseInfo, ref dt,bigClassNo))
{
DADatabase.CloseConnection(dcDatabaseInfo);
}
DADatabase.CloseConnection(dcDatabaseInfo);
}
// 成功
ds.Tables.Add(dt);
return ds;
}
[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.Read)]
public static DataSet GetLitClassList(int midClassNo)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable("LITCLASS");

using (DCDatabaseInfo dcDatabaseInfo = new DCDatabaseInfo())
{
// 接続
if (!DADatabase.OpenConnection(dcDatabaseInfo))
{
}
// DB取得

if (!DALitClass.GetLitClassInfo(dcDatabaseInfo, ref dt, midClassNo))
{
DADatabase.CloseConnection(dcDatabaseInfo);
}
DADatabase.CloseConnection(dcDatabaseInfo);
}
// 成功
ds.Tables.Add(dt);
return ds;
}
}
}

http://www.netlove21.com
liujbsir 2007-10-16
  • 打赏
  • 举报
回复
不知道定说的内容添加到Window的自动完成列表中是什么意思。但是我想你是不是提交后不能保持!如果是的话,你看看我写的三级联动,提交后保持,不知道对你有没有帮助。

画面部分:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="BMLClass.ascx.cs" Inherits="Control_BMLClass" %>
<script language="javascript" type="text/javascript">
var handle ;
function midClassResult()
{
var bigClass=document.getElementById("<%=ddlBigClass.ClientID%>");

AjaxClass.GetMidClassList(bigClass.value,get_midClass_Result_CallBack);
handle = setTimeout("DoLit()",100);
}

function get_midClass_Result_CallBack(response)
{
if (response.value != null)
{
//debugger;
document.getElementById("<%=ddlMidClass.ClientID%>").length=0;    

var ds = response.value;
var midCode = "";
var midName = "";
document.getElementById("<%=hidMidValue.ClientID %>").value = "";
document.getElementById("<%=hidMidCode.ClientID %>").value = "";
document.getElementById("<%=hidMidName.ClientID %>").value = "";

if(ds != null && typeof(ds) == "object" && ds.Tables != null)
{
for(var i=0; i<ds.Tables[0].Rows.length; i++)
{
var name=ds.Tables[0].Rows[i].NAME;
var id=ds.Tables[0].Rows[i].NO;
document.getElementById("<%=ddlMidClass.ClientID%>").options.add(new Option(name,id));
document.getElementById("<%=hidMidValue.ClientID %>").value = id;

if (id == "")
{
midCode = id;
midName = name;
}
else
{
midCode = midCode + "," + id;
midName = midName+ "," + name;
}
}
document.getElementById("<%=hidMidCode.ClientID %>").value = midCode;
document.getElementById("<%=hidMidName.ClientID %>").value = midName;
}
}
return;
}

function litClassResult()
{

var midClass=document.getElementById("<%=ddlMidClass.ClientID%>");
AjaxClass.GetLitClassList(midClass.value,get_litClass_Result_CallBack);
}

function get_litClass_Result_CallBack(response)
{

if (response.value != null)
{
//debugger;
document.getElementById("<%=ddlLitClass.ClientID%>").length=0;    

var ds = response.value;
var litCode = "";
var litName = "";
document.getElementById("<%=hidLitValue.ClientID %>").value = "";
document.getElementById("<%=hidLitCode.ClientID %>").value = "";
document.getElementById("<%=hidLitName.ClientID %>").value = "";

if(ds != null && typeof(ds) == "object" && ds.Tables != null)
{
for(var i=0; i<ds.Tables[0].Rows.length; i++)
{
var name=ds.Tables[0].Rows[i].NAME;
var id=ds.Tables[0].Rows[i].NO;
document.getElementById("<%=ddlLitClass.ClientID%>").options.add(new Option(name,id));
document.getElementById("<%=hidLitValue.ClientID %>").value = id;

if (id == "")
{
litCode = id;
litName = name;
}
else
{
litCode = litCode + "," + id;
litName = litName+ "," + name;
}
}
document.getElementById("<%=hidLitCode.ClientID %>").value = litCode;
document.getElementById("<%=hidLitName.ClientID %>").value = litName;
}
}
return;
}
</script>

大類:<asp:DropDownList ID="ddlBigClass" Width="120px" runat="server">
</asp:DropDownList>
中類:<asp:DropDownList ID="ddlMidClass" Width="120px" runat="server">
</asp:DropDownList>
小類:<asp:DropDownList ID="ddlLitClass" Width="120px" runat="server">
</asp:DropDownList>

<asp:HiddenField ID="hidMidValue" runat="server" />
<asp:HiddenField ID="hidMidCode" runat="server" />
<asp:HiddenField ID="hidMidName" runat="server" />

<asp:HiddenField ID="hidLitValue" runat="server" />
<asp:HiddenField ID="hidLitCode" runat="server" />
<asp:HiddenField ID="hidLitName" runat="server" />
<script language="javascript" type="text/javascript">
midClassResult();

function DoLit()
{
litClassResult();
clearInterval(handle);
}
</script>


liujbsir 2007-10-16
  • 打赏
  • 举报
回复
不知道定说的内容添加到Window的自动完成列表中是什么意思。但是我想你是不是提交后不能保持!如果是的话,你看看我写的三级联动,提交后保持,不知道对你有没有帮助。

画面部分:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="BMLClass.ascx.cs" Inherits="Control_BMLClass" %>
<script language="javascript" type="text/javascript">
var handle ;
function midClassResult()
{
var bigClass=document.getElementById("<%=ddlBigClass.ClientID%>");

AjaxClass.GetMidClassList(bigClass.value,get_midClass_Result_CallBack);
handle = setTimeout("DoLit()",100);
}

function get_midClass_Result_CallBack(response)
{
if (response.value != null)
{
//debugger;
document.getElementById("<%=ddlMidClass.ClientID%>").length=0;    

var ds = response.value;
var midCode = "";
var midName = "";
document.getElementById("<%=hidMidValue.ClientID %>").value = "";
document.getElementById("<%=hidMidCode.ClientID %>").value = "";
document.getElementById("<%=hidMidName.ClientID %>").value = "";

if(ds != null && typeof(ds) == "object" && ds.Tables != null)
{
for(var i=0; i<ds.Tables[0].Rows.length; i++)
{
var name=ds.Tables[0].Rows[i].NAME;
var id=ds.Tables[0].Rows[i].NO;
document.getElementById("<%=ddlMidClass.ClientID%>").options.add(new Option(name,id));
document.getElementById("<%=hidMidValue.ClientID %>").value = id;

if (id == "")
{
midCode = id;
midName = name;
}
else
{
midCode = midCode + "," + id;
midName = midName+ "," + name;
}
}
document.getElementById("<%=hidMidCode.ClientID %>").value = midCode;
document.getElementById("<%=hidMidName.ClientID %>").value = midName;
}
}
return;
}

function litClassResult()
{

var midClass=document.getElementById("<%=ddlMidClass.ClientID%>");
AjaxClass.GetLitClassList(midClass.value,get_litClass_Result_CallBack);
}

function get_litClass_Result_CallBack(response)
{

if (response.value != null)
{
//debugger;
document.getElementById("<%=ddlLitClass.ClientID%>").length=0;    

var ds = response.value;
var litCode = "";
var litName = "";
document.getElementById("<%=hidLitValue.ClientID %>").value = "";
document.getElementById("<%=hidLitCode.ClientID %>").value = "";
document.getElementById("<%=hidLitName.ClientID %>").value = "";

if(ds != null && typeof(ds) == "object" && ds.Tables != null)
{
for(var i=0; i<ds.Tables[0].Rows.length; i++)
{
var name=ds.Tables[0].Rows[i].NAME;
var id=ds.Tables[0].Rows[i].NO;
document.getElementById("<%=ddlLitClass.ClientID%>").options.add(new Option(name,id));
document.getElementById("<%=hidLitValue.ClientID %>").value = id;

if (id == "")
{
litCode = id;
litName = name;
}
else
{
litCode = litCode + "," + id;
litName = litName+ "," + name;
}
}
document.getElementById("<%=hidLitCode.ClientID %>").value = litCode;
document.getElementById("<%=hidLitName.ClientID %>").value = litName;
}
}
return;
}
</script>

大類:<asp:DropDownList ID="ddlBigClass" Width="120px" runat="server">
</asp:DropDownList>
中類:<asp:DropDownList ID="ddlMidClass" Width="120px" runat="server">
</asp:DropDownList>
小類:<asp:DropDownList ID="ddlLitClass" Width="120px" runat="server">
</asp:DropDownList>

<asp:HiddenField ID="hidMidValue" runat="server" />
<asp:HiddenField ID="hidMidCode" runat="server" />
<asp:HiddenField ID="hidMidName" runat="server" />

<asp:HiddenField ID="hidLitValue" runat="server" />
<asp:HiddenField ID="hidLitCode" runat="server" />
<asp:HiddenField ID="hidLitName" runat="server" />
<script language="javascript" type="text/javascript">
midClassResult();

function DoLit()
{
litClassResult();
clearInterval(handle);
}
</script>


ReyZhang 2007-10-16
  • 打赏
  • 举报
回复
帮顶
christ2 2007-10-16
  • 打赏
  • 举报
回复
最后一顶,100分可别浪费。。。
honey52570 2007-10-13
  • 打赏
  • 举报
回复
jf
xiaoliangwh 2007-10-13
  • 打赏
  • 举报
回复
up
xuan.ye 2007-10-12
  • 打赏
  • 举报
回复
等学习

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧