мы можем использовать как пользовательскую кнопку, так и встроенную кнопку в datagridview - PullRequest
1 голос
/ 29 апреля 2010

Привет всем,

Я использую Datagridview в asp.net. Я использовал пользовательские кнопки вверх и вниз в сетке данных вместе с опциями редактирования, удаления и подкачки.

альтернативный текст http://i41.tinypic.com/90dbmx.jpg

Я управляю кнопками вверх-вниз, вызывая события в строке команды, и код такой, как показано ниже


    string command = e.CommandName;

    Response.Write(e.CommandArgument.ToString());       
    int index = Convert.ToInt32(e.CommandArgument.ToString());        
    int count = GridView1.Rows.Count;
    int keyValue = Convert.ToInt32(GridView1.Rows[index].Cells[1].Text);
    string value = GridView1.Rows[index].Cells[4].Text;

    SqlConnection conn = new SqlConnection(SqlDataSource1.ConnectionString);
    SqlCommand cmd = new SqlCommand();


    if (command == "up")
    {
        if (index > 0)
        {
            index = index - 1;
            int keyValue1 = Convert.ToInt32(GridView1.Rows[index].Cells[1].Text);
            string value1 = GridView1.Rows[index].Cells[4].Text;
            cmd.Connection = conn;
            cmd.CommandText = "UPDATE [category] SET [order_id] = '" + value + "' WHERE [category_id]=" + keyValue1 + ";UPDATE [category] SET [order_id] = '" + value1 + "' WHERE [category_id]=" + keyValue + ";";

            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();

        }
    }
    else if (command == "down")
    {
        if (index < count - 1)
        {
            index = index + 1;
            int keyValue1 = Convert.ToInt32(GridView1.Rows[index].Cells[1].Text);
            string value1 = GridView1.Rows[index].Cells[4].Text;
            cmd.Connection = conn;
            cmd.CommandText = "UPDATE [category] SET [order_id] = '" + value + "' WHERE [category_id]=" + keyValue1 + ";UPDATE [category] SET [order_id] = '" + value1 + "' WHERE [category_id]=" + keyValue + ";";

            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();               
        }
    }

    Response.Redirect("Default.aspx");

Файл конструктора


<div>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="category_id" DataSourceID="SqlDataSource1" 
        AllowPaging="True" onrowcommand="GridView1_RowCommand" 
        onselectedindexchanged="GridView1_SelectedIndexChanged" 
        AllowSorting="True">

        <Columns>
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
            <asp:BoundField DataField="category_id" HeaderText="category_id" 
                InsertVisible="False" ReadOnly="True" SortExpression="category_id" />
            <asp:BoundField DataField="categoryname" HeaderText="categoryname" 
                SortExpression="categoryname" />
            <asp:BoundField DataField="navigation_url" HeaderText="navigation_url" 
                SortExpression="navigation_url" />
            <asp:BoundField DataField="order_id" HeaderText="order_id" 
                SortExpression="order_id" />
            <asp:ButtonField ButtonType="Image" CommandName="up" Text="up" 
                ImageUrl="~/images/up.png" />
            <asp:ButtonField ButtonType="Image" CommandName="down" 
                ImageUrl="~/images/down.png" Text="down" />
                <asp:TemplateField>
                <ItemTemplate>
                    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="btnSubmit"/>
                </ItemTemplate>
                </asp:TemplateField>
            <asp:ButtonField CommandName="edit" Text="Edit" />
        </Columns>

    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:pp_cmsConnectionString %>" 
        DeleteCommand="DELETE FROM [category] WHERE [category_id] = @category_id" 
        InsertCommand="INSERT INTO [category] ([categoryname], [navigation_url], [order_id]) VALUES (@categoryname, @navigation_url, @order_id)" 
        SelectCommand="SELECT * FROM [category] order by order_id" 
        UpdateCommand="UPDATE [category] SET [categoryname] = @categoryname, [navigation_url] = @navigation_url, [order_id] = @order_id WHERE [category_id] = @category_id">
        <DeleteParameters>
            <asp:Parameter Name="category_id" Type="Int32" />
        </DeleteParameters>
        <UpdateParameters>
            <asp:Parameter Name="categoryname" Type="String" />
            <asp:Parameter Name="navigation_url" Type="String" />
            <asp:Parameter Name="order_id" Type="Decimal" />
            <asp:Parameter Name="category_id" Type="Int32" />
        </UpdateParameters>
        <InsertParameters>
            <asp:Parameter Name="categoryname" Type="String" />
            <asp:Parameter Name="navigation_url" Type="String" />
            <asp:Parameter Name="order_id" Type="Decimal" />
        </InsertParameters>
    </asp:SqlDataSource>

</div>

После этого мое редактирование, удаление и подкачка страниц не работают из-за конфликтов событий. Может ли кто-нибудь PLZ помочь мне в этом, так что я смогу использовать как пользовательские кнопки (вверх и вниз) и редактировать, удалять и функции подкачки.

1 Ответ

1 голос
/ 29 апреля 2010

Я думаю, что ваша проблема - Перенаправление в конце.
Если пользователь нажимает стандартные кнопки редактирования / удаления, ваш OnRowCommand метод все равно будет выполняться первым, и, вероятно, поэтому он перестал работать.
Непонятно, зачем вам нужно перенаправление, но вы должны обязательно вызывать его только после выполнения одной из ваших пользовательских команд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...