1

我正在使用带有 ItemTemplate 的 RadListView 控件,其中包含一个按钮,如下所示:

<ItemTemplate>
    <tr class="rlvI">
        //more TD elements here
        <td>
            <telerik:RadButton ID="ENABLEDToggle" runat="server" Width="75" ButtonType="StandardButton" AutoPostBack="true"
            ToggleType="CustomToggle" Checked='<%# Enabled_Converter(Eval("ENABLED")) %>' OnCheckedChanged="TaskStateChange_Clicked">
                <ToggleStates>
                    <telerik:RadButtonToggleState Text="Enabled" />
                    <telerik:RadButtonToggleState Text="Disabled" />
                </ToggleStates>
            </telerik:RadButton>
        </td>
    </tr>
</ItemTemplate>

我的第一个问题是为什么当我按下按钮时,我没有进入我的 TaskStateChange_Clicked 事件处理程序?就好像该事件从未被触发。

其次,每当单击按钮时,如何获取与该行关联的对象?

4

1 回答 1

2

至于第一个问题,请检查您如何绑定RadListView. 如果控件在每次回发时都与数据绑定,则通常会出现此类问题。所以如果你有类似的东西

void Page_Load(object sender, EventArgs e)
{
    ...
    RadListView1.DataSource = dataSource;
    RadListView1.DataBind();
    ...
}

将其替换为

void Page_Load(object sender, EventArgs e)
{
    ...
    if (!this.IsPostBack)
    {
        RadListView1.DataSource = dataSource;
        RadListView1.DataBind();
    }
    ...
}

从评论更新。另一个原因可能是您的按钮类型是StandardButton规范暗示事件CheckedChanged仅在按钮类型为时触发ToggleButton

至于第二个问题,考虑使用 RadListView 的ItemCommand事件。这样你就可以利用它的CommandArgument属性RadButton并传递你想要的任何信息,比如对象的 ID。

于 2012-08-02T12:26:11.667 回答