当前位置:编程学习 > C#/ASP.NET >>

Datalist中Button的Click方法怎么得到其它控件的ID?

在Datalist中,,有三个控件..


Button1   Label1   和DropDownList1..
我想当我选取了DropDownList1中的一个值时,,,单击Button1后就将该值赋给Label1.text..

在.CS文件中..
 protected void Button1_Click(object sender, EventArgs e)
    {
           可是在这里面....却没有Label1控件的ID.....
    }

我应该怎么办? --------------------编程问答-------------------- 不是这个事件
你DataList中的Button的事件是通过ItemDataBind这个事件用FindControl找到的,而不是事先注册的,明白么?

ItemDataBind这个事件里面,用e.Item.ItemIndex拿到行的索引
然后e.Item.FindControl(ID)去找到相应的控件
就可以了 --------------------编程问答-------------------- 楼上正解
Button btn = ((Button)(this.DataList.Item[e.Item.ItemIndex].FindControl("Button1"))); --------------------编程问答-------------------- 大哥..能给个详细的示例代码吗?? --------------------编程问答-------------------- 那就算查到了..就比如说..这个新的Button的ID为btn
那么它的单击事件怎么写?? --------------------编程问答-------------------- Item.FindControl(""); --------------------编程问答--------------------
在DataList的ItemDataBind里面
Button btn = ((Button)(this.DataList.Item[e.Item.ItemIndex].FindControl("Button1")));
btn.Attributes.Add("onclick", "btn_Click()");

在外面写方法
protected void btn_Click(object sender, EventArgs e)
{
     //在这里实现方法
} --------------------编程问答-------------------- 我记得btn.Attributres.add("onclick","btn_click()");
是调用的javascript的方法吧?

。。。。学习中。。。。。。。 --------------------编程问答-------------------- 编译器错误消息: CS1061: “System.Web.UI.WebControls.DataList”不包含“Item”的定义,并且找不到可接受类型为“System.Web.UI.WebControls.DataList”的第一个参数的扩展方法“Item”(是否缺少 using 指令或程序集引用?)


出现错误了.. --------------------编程问答-------------------- 是DataList的ItemDataBInd事件
在这个事件里面
用e.Item.ItemIndex去判断索引 --------------------编程问答--------------------   protected void Default_Top_RightContDataL_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        Button btn =((Button)(this.Default_Top_CenterContDataL.Item[e.Item.ItemIndex].FindControl("ButTouP")));
        btn.Attributes.Add("onclick", "btn_Click()");
    }
    protected void btn_Click(object sender, EventArgs e)
    {
        Response.Write("试试!");
    }

对啊..就这样子的啊...




编译器错误消息: CS1061: “System.Web.UI.WebControls.DataList”不包含“Item”的定义,并且找不到可接受类型为“System.Web.UI.WebControls.DataList”的第一个参数的扩展方法“Item”(是否缺少 using 指令或程序集引用?)


 Button btn =((Button)(this.Default_Top_CenterContDataL.Item[e.Item.ItemIndex].FindControl("ButTouP")));


上面这一行提示出错...我的是(.NET Framework 3.5)的.. --------------------编程问答-------------------- 不是那么做


在ItemDataBind事件中为btn添加Command响应事件
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{

     Button mybtn = e.Item.FindControl("btn") as Button;
     mybtn.CommandName = "myclick";
     mybtn.CommandArgument = e.Item.ItemIndex.ToString();     
}

点击Datalist添加一个ItemCommand事件

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
        if (e.CommandName == "myclick")
        {
            (DataList1.Items[e.Item.ItemIndex].FindControl("Label1") as Label).Text = 
(DataList1.Items [e.Item.ItemIndex].FindControl("DropDownList1") as DropDownList).SelectedItem.Text;

        }
} --------------------编程问答-------------------- 参考现形的:

http://blog.csdn.net/insus/archive/2008/02/27/2123970.aspx --------------------编程问答-------------------- 11楼的方法....


异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。




mybtn.CommandName = "myclick";

报错...



protected void Default_Top_RightContDataL_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        Button mybtn = e.Item.FindControl("TouP") as Button;
        mybtn.CommandName = "myclick";
        mybtn.CommandArgument = e.Item.ItemIndex.ToString();      
    }
    protected void Default_Top_RightContDataL_ItemCommand(object source, DataListCommandEventArgs e)
    {
        if (e.CommandName == "myclick")
        {
            (Default_Top_RightContDataL.Items[e.Item.ItemIndex].FindControl("Label1") as Label).Text = (Default_Top_RightContDataL.Items[e.Item.ItemIndex].FindControl("DropDownList1") as DropDownList).SelectedItem.Text;
        }
    } --------------------编程问答-------------------- 在Framework2.0中我试过是可以的,3.5的话我就不清楚了.....
期待中...... --------------------编程问答-------------------- 楼主绑定DataList时确保没有问题吗,再试试吧,
我想2.0和3.5区别不应该太大吧 --------------------编程问答-------------------- 绑定时应该没有问题..数据显示都正常.....


我想过了...我想要的目的没有那么复杂了..可以简化实现..

只要一个Button..不用laebl和DropDownList了.


当点击Button点击后.....Datalist就重新执行一次绑定数据..并显示出来....

就像Delete按钮删除一条新闻后..上面的新闻列表就自动刷新一下..进行重新排序那种效果... --------------------编程问答-------------------- 不好意思了,没能解决问题,还需努力努力努力 --------------------编程问答-------------------- 呵呵..没关系....谢谢你的帮忙....您能百忙抽时间回复我的贴子..就已很知足了....

..我再翻翻书看看.. --------------------编程问答-------------------- Buttion btn = (Buttion)Sender;
DataItemList item= (DataItemList)btn.Parent;
Label lbl = item.FindControl("label1");
DropDownList ddl = item.FindControl("DropDownList1");
lbl.Text = ddl.SelectedItem.text;

以上代码写到按钮事情中 就能实现你想要的效果。
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,