首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过单击按钮获取datalist项的值

如何通过单击按钮获取datalist项的值
EN

Stack Overflow用户
提问于 2014-06-16 18:38:35
回答 2查看 8.6K关注 0票数 0

我有一个带有命令按钮的dataList,我想单击该按钮并在我单击的按钮的datalist视图中获取字段的值。

我尝试过各种各样的解决方案,但一直在努力。

{“对象引用未设置为对象的实例”}

这是我的数据列表

代码语言:javascript
复制
<asp:DataList ID="DataList1" runat="server" DataKeyField="ID" DataSourceID="SqlDataSource1" Width="579px" OnItemCommand = "Datalist1_ItemCommand">
    <ItemTemplate>
        Epic:
        <asp:Label ID="EpicLabel" runat="server" Text='<%# Eval("Epic") %>' />
        <br />
        ID:
        <asp:Label ID="IDLabel" runat="server" Text='<%# Eval("ID") %>' />
        <br />
        Company:
        <asp:Label ID="CompanyLabel" runat="server" Text='<%# Eval("Company") %>' />
        <br />
        Date:
        <asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' />
        <br />
        time:
        <asp:Label ID="timeLabel" runat="server" Text='<%# Eval("time") %>' />
        <br />
        NewsItem:
        <asp:Label ID="NewsItemLabel" runat="server" Text='<%# Eval("NewsItem") %>' />
        <br />
        HeadLine:
        <asp:Label ID="HeadLineLabel" runat="server" Text='<%# Eval("HeadLine") %>' />
        <br />

        <asp:Button ID="Button1" runat="server" CommandArgument='<%# Eval("Epic", "{0}") %>' Text="Button" />

<br />
    </ItemTemplate>
</asp:DataList>

她是我背后的密码

代码语言:javascript
复制
    public void Datalist1_ItemCommand(object sender, DataListCommandEventArgs e)

    {
        var button = sender as Button;

       /// if (button == null) return;

        var dataListItem = button.NamingContainer as DataListItem;

        if (dataListItem == null) return;

        var currentKey = DataList1.DataKeys[dataListItem.ItemIndex];

        var myLabel = button.Parent.Controls.Cast<Control>().FirstOrDefault(x => x.ID == "Epic") as Label;

      ///  if (myLabel == null) return;

        var myLabelText = myLabel.Text;
    }
EN

回答 2

Stack Overflow用户

发布于 2014-06-17 00:06:56

您可以使用代码上的以下更改来实现这一点;

在您的按钮控制:

代码语言:javascript
复制
 <asp:Button ID="Button1" runat="server" CommandName="myCommand" Text="Button" />

在您的ItemCommand事件上:

代码语言:javascript
复制
    protected void DataList1_ItemCommand(object source, 
                                        DataListCommandEventArgs e)
    {
        switch (e.CommandName)
        { 
            case "myCommand":
                // more code could go here

                Label myLabel = (Label)e.Item.FindControl("EpicLabel");
                var myLabelText = myLabel.Text;

                // more code could go here
                break;
        }
    }
票数 1
EN

Stack Overflow用户

发布于 2014-06-16 20:22:30

如果我没有弄错,您要查找的控件的ID实际上称为EpicLabel,而不仅仅是Epic。如果调试器所说的myLabel没有设置为对象的实例,这很可能是您的问题。

所以这句话:

代码语言:javascript
复制
var myLabel = button.Parent.Controls.Cast<Control>().FirstOrDefault(x => x.ID == "Epic") as Label;

需要:

代码语言:javascript
复制
var myLabel = button.Parent.Controls.Cast<Control>().FirstOrDefault(x => x.ID == "EpicLabel") as Label;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24250054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档