1

所以我有一个我写的方法,它将 selectedValue 从一个下拉框中复制到特定行中的另一个。它是从 OnCommand 事件的行上的按钮调用的。

    protected void Copy(String From, String To, GridViewRow CurrentRow)
    {
        DropDownList FromList = (DropDownList)CurrentRow.FindControl(From);
        DropDownList ToList = (DropDownList)CurrentRow.FindControl(To);
        ToList.SelectedValue = FromList.SelectedValue;
    }

现在,当我在页脚行上使用它时,一切正常,但是,当我在编辑行时尝试调用它时,如果我调试,我可以看到数据,但是,下拉菜单不会填充。没有错误,发生。

我确实通过了这个过程,它在我的 OnCommand 事件触发后再次调用了我的 Grids RowEditing 事件(填充所有下拉列表)。所以我的猜测是,它只是通过重新填充下拉列表来消除我所做的更改。

有没有办法防止 RowEditing 事件重新触发(即使它只是为了证明自己是对还是错)?我应该以其他方式处理此副本吗?

4

2 回答 2

0

不要DataBind()回发:

if(!Page.IsPostback)
{
    //databind
}
于 2012-07-06T18:08:13.180 回答
0

所以我今天早上发现了我的问题,这是因为我在按钮上使用了 CommandName 属性,或者更具体地说,是我使用的名称。

我认为 CommandName 只是一个供您传递值的空白点,但如果您使用某个名称,例如“Edit”,它实际上会为与该按钮关联的网格启动 RowEditing 事件。

我不认为这会以这种方式工作(考虑到与按钮相关联,而不是与网格相关联)但是一旦我更改了命令名称,它就可以正常工作。我把它改回来了,它又坏了。

于 2012-07-09T12:44:02.677 回答