点一个btn,然后手动绑定同页面的DownDropList,不要刷新,能用什么办法

handht 2009-09-29 11:18:13
点一个btn,然后手动绑定同页面的ddl,不能刷新,能用什么办法,各位
...全文
163 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2009-09-30
  • 打赏
  • 举报
回复
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="btn" runat="server" Text="btn" />
<asp:DropDownList id="ddl" runat="server"></asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>

<asp:Button ID="btn" runat="server" onClientClick="A()" Text="btn" />
function A()
{
AjaxMethod.GetList(get_Result);
}
function get_Result(response)
{
if (response.value != null)
{
document.all("ddl").length=0;    
     var ds = response.value;
if(ds != null && typeof(ds) == "object")
{
for(var i=0; i<ds.Tables[0].Rows.length; i++)
     {
     var name=ds.Tables[0].Rows[i].City;
       var id=ds.Tables[0].Rows[i].City;
       document.all("ddl").options.add(new Option(name,id));
     }
}
}
return
}
}
Adechen 2009-09-30
  • 打赏
  • 举报
回复
updatepanel
方法如12楼的
lu_huanling 2009-09-30
  • 打赏
  • 举报
回复
也可以使用aps.net的 方法回調事件也可以的
「已注销」 2009-09-30
  • 打赏
  • 举报
回复
Ajax
Nobel0429 2009-09-30
  • 打赏
  • 举报
回复
ajax
moondreamyou 2009-09-30
  • 打赏
  • 举报
回复
DropDownListDepartment为DDL,Button点击后让它执行btclick()。

首先给你的button添加一个onClientClick="btclick()"
Javascript代码:

var xmlhttp;

function btclick()
{
if(window.ActiveXObject)
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
xmlhttp.onreadystatechange=statechange;
xmlhttp.open("POST","DataPage.aspx,true);
xmlhttp.send();
}

function changeDDL()
{
var dropdownlist=document.getElementById('DropDownListDepartment');
//清空原有项
while(dropdownlist.options.length>0)
{
dropdownlist.remove(0);
}
document.getElementById('DropDownListDepartment').options.add(new Option("全部","0"));//给dropdownlist添加全部
//分割字符,加载数据到dropdownlist
var grop=new Array();
grop=retext.split(";");//首先按;分组,每组是一个ID+Name,用,隔开
//document.getElementById('mydiv').innerHTML=grop.toString();
var len=grop.length;
for(i=0;i<len-1;i++)
{
var temp=grop[i];
var obj=new Array();
obj = temp.split(",");//按,分组,把ID何Name都分开来。
val=obj[0];//值
txt=obj[1];//文本
document.getElementById('DropDownListDepartment').options.add(new Option(txt,val));//给dropdownlist添加数据
}
}

function statechange()
{
if(xmlhttp.readyState==4)
{
if(xmlhttp.status==200||xmlhttp.status==0)
{
var retext=xmlhttp.responseText;
changeDDL(retext);
}
}
}


需要添加一个DataPage.aspx,写你的数据获取代码在这个页(需要引用using System.Data.SqlClient;
using System.Text;):

protected void Page_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"Data Source=127.0.0.1\SQLEXPRESS;Initial Catalog=sample;User ID=mary;Password=1234;");

string cmdTex = "";
cmdTex = "select departmentID,departmentName from Department";
SqlCommand cmd = new SqlCommand(cmdTex, conn);


SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
conn.Open();
da.Fill(dt);
conn.Close();

StringBuilder data = new StringBuilder();
int len = dt.Rows.Count;
for (int i = 0; i < len; i++)
{
data.Append(dt.Rows[i][0].ToString() + "," + dt.Rows[i][1] + ";");
}

Response.Write(data.ToString());
Response.End();//防止了返回一大串HTML代码引发其他错误。
}

moondreamyou 2009-09-30
  • 打赏
  • 举报
回复
xmlhttp异步获取+javascript最好,适用于各种无刷新读取数据,updatepanel不是什么都能行的。
lanlan85525 2009-09-30
  • 打赏
  • 举报
回复
前台:

<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="sm1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="up1" runat="server">
<ContentTemplate>
<asp:Button ID="btnBind" runat="server" Text="BindData" OnClick="Bind_Data" />
<asp:DropDownList ID="ddl1" runat="server">
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>



后台:

protected void Bind_Data(object sender, EventArgs e)
{
DataTable dt = this.GetData();
this.ddl1.DataSource = dt;
this.ddl1.DataValueField = "key";
this.ddl1.DataTextField = "value";
this.ddl1.DataBind();
}

private DataTable GetData()
{
DataTable dt = new DataTable();
dt.Columns.Add("key", typeof(string));
dt.Columns.Add("value", typeof(string));

DataRow dr = null;
for (int i = 0; i < 10; i++)
{
dr = dt.NewRow();
dr[0] = i;
dr[1] = "value" + i;
dt.Rows.Add(dr);
}

return dt;
}
a76477140 2009-09-30
  • 打赏
  • 举报
回复
吧你的dropdonwlist 和BTN放在UpdatePanel 里面就可以了啊。。
是在不行。搜索一下UpdatePanel 的使用方法就可以了
SK_Aqi 2009-09-29
  • 打赏
  • 举报
回复
可以用UpdatePanel也可以用ajax控件<cc1:CascadingDropDown...
slove1116 2009-09-29
  • 打赏
  • 举报
回复
http://www.51aspx.com/CV/DadaAjaxProSamples/
handht 2009-09-29
  • 打赏
  • 举报
回复
具体点哈,搞不懂啊
dd__dd 2009-09-29
  • 打赏
  • 举报
回复
Ajax UpdatePanel
randomfeel 2009-09-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 time_is_life 的回复:]
将btn和dropdonwlist都包在UpdatePanel中就好了
[/Quote]

然后在btn的click事件里写 绑定ddl的代码
就不会刷新了

自己搜一下UpdatePanel怎么用吧
yx5131421 2009-09-29
  • 打赏
  • 举报
回复
可以自己手写ajax xmlhttprequest
amywm1 2009-09-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 time_is_life 的回复:]
将btn和dropdonwlist都包在UpdatePanel中就好了
[/Quote]

这种很好!!
qq914719979 2009-09-29
  • 打赏
  • 举报
回复
对,AJAX技术,建议不要去学习AJAX技术,在C#没有学的很精通的情况,要不你绝对会晕死的,问题会源源不断和病毒一样,因为你还用控件自动绑顶,就知道技术一般,你的程序估计不大,如果是大型程序,老这样自动绑顶,虽然速度快,但是会出现问题,最后很无奈,全部推翻全部手写绑顶。
wiki14 2009-09-29
  • 打赏
  • 举报
回复
用AJAX,页面无刷新效果
time_is_life 2009-09-29
  • 打赏
  • 举报
回复
将btn和dropdonwlist都包在UpdatePanel中就好了

62,266

社区成员

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

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

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

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