首页 新闻 会员 周边

asp.net关于GridViewCommandEventArgs参数的问题

0
[已解决问题] 解决于 2012-06-04 09:37

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<script runat="server">

    protected void grdMovieCategories_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int index = Int32.Parse((string)e.CommandArgument);
        int id = (int)grdMovieCategories.DataKeys[index].Values["Id"];
        int position = (int)grdMovieCategories.DataKeys[index].Values["Position"];
        switch (e.CommandName)
        {
            case "Up":
                position--;
                break;
            case "Down":
                position++;
                break;
        }
        srcMovieCategories.UpdateParameters["Id"].DefaultValue = id.ToString();
        srcMovieCategories.UpdateParameters["Position"].DefaultValue = position.ToString();
        srcMovieCategories.Update();
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Show ButtonField</title>
</head>
<body>
    <form runat="server">
    <div>
    
    <asp:GridView
       
        DataSource
        DataKeyNames="Id,Position"
        AutoGenerateColumns="false"
        OnRowCommand="grdMovieCategories_RowCommand"
        Runat="server">
        <Columns>
        <asp:ButtonField
            Text="Move Up"
            CommandName="Up" />
        <asp:ButtonField
            Text="Move Down"
            CommandName="Down" />
        <asp:BoundField
            DataField="Position"
            HeaderText="Position" />
        <asp:BoundField
            DataField="Name"
            HeaderText="Category Name" />
        </Columns>
    </asp:GridView>    
    
    <asp:SqlDataSource
       
        ConnectionString="<%$ ConnectionStrings:Movies %>"
        SelectCommand="SELECT Id, Name, Position FROM MovieCategories
            ORDER BY Position"
        UpdateCommand="UPDATE MovieCategories SET
            Position=@Position WHERE Id=@Id"
        Runat="server">
        <UpdateParameters>
        <asp:Parameter
            Name="Id" />
        <asp:Parameter
            Name="Position" />
        </UpdateParameters>
    </asp:SqlDataSource>        
    
    </div>
    </form>
</body>
</html>

例如这么一个程序,e.CommandArgument怎么取出来行序列的?又没有定义过CommandArgument的值

微澜的主页 微澜 | 初学一级 | 园豆:-1
提问于:2012-05-22 20:01
< >
分享
最佳答案
0

是在这里定义的:

<asp:ButtonField
            Text="Move Up"
            CommandName="Up" />
        <asp:ButtonField
            Text="Move Down"
            CommandName="Down" />
奖励园豆:5
dudu | 高人七级 |园豆:30994 | 2012-05-22 20:19

但是并没有定义CommandArgument的值啊,我就是好奇怎么程序就能自动把CommandArgument的值与行的序号绑定在了一起

微澜 | 园豆:-1 (初学一级) | 2012-05-22 20:27

@微澜: 这可能是默认的,你可以通过CommandArgument传值:

<asp:ButtonField
            Text="Move Up"
            CommandName="Up"  CommandArgument=""/>
       
dudu | 园豆:30994 (高人七级) | 2012-05-22 20:46
其他回答(1)
0

默认就是这个

artwl | 园豆:16736 (专家六级) | 2012-05-22 20:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册