Проблема с пейджингом в GridView - PullRequest
2 голосов
/ 08 августа 2011

У меня есть сетка просмотра, настроенная на подкачку страниц, но она не работает правильно.

Виден только элемент управления первой страницы - на других страницах отображаются поля, но внутри них нет элемента управления.

Кто-нибудь знает, почему это может быть?Я проверил, что у меня есть более одной страницы данных.

Спасибо,

Оливер

Я приложил скриншот, который, я надеюсь, иллюстрирует мою проблему.

http://i.stack.imgur.com/NOFnB.jpg

РЕДАКТИРОВАТЬ: источник для вида сетки

    <asp:GridView ID="GridView1" runat="server" OnPageIndexChanging="GridView1_PageIndexChanging" 
    CssClass="GridView1" OnSelectedIndexChanged="GridView_SelectedIndexChanged"
    AllowPaging="True" PageSize="20">      
    <selectedrowstyle backcolor="LightCyan" forecolor="DarkBlue" font-bold="true" />
</asp:GridView>

он заполняется с использованием набора данных, созданного в c #

РЕДАКТИРОВАТЬ: c # codebehind

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        bindGridView();
    }

    public void bindGridView()
    {
        //declare the connection string to use
        string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;

        //create sql connection
        SqlConnection mySQLconnection = new SqlConnection(connectionString);

        //open connection
        mySQLconnection.Open();

            //define command using text string
            SqlCommand mySqlCommand = new SqlCommand(sqlTester, mySQLconnection);
            SqlDataAdapter mySqlAdapter = new SqlDataAdapter(mySqlCommand);

            //create dataset to fill gridview with
            DataSet myDataSet = new DataSet();
            mySqlAdapter.Fill(myDataSet);

            //fill gridview
            GridView1.DataSource = myDataSet;
            GridView1.DataBind();

        //close the sql connection
        mySQLconnection.Close();
    }

Ответы [ 2 ]

1 голос
/ 08 августа 2011

Я думаю в соответствии с вашим aspx и вашим .cs.в вашем css-файле "GridView1" есть какая-то проблема. Попробуйте удалить класс css и сообщите нам.проблема все еще существует или нет.

Примечание:

Это не связано с вашим вопросом.но я думаю, что вы должны разделить ваш код по слоям, а не писать весь код в коде вашей страницы.

Читайте о:

  • Слои в asp.net.
  • ОРМ.
0 голосов
/ 08 августа 2011

Вы устанавливаете соединение и отключение базы данных для каждого события изменения индекса страницы. Это вызывает много накладных расходов. Попробуйте это.

public void bindGridView()
{
    //declare the connection string to use
    string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;

    //create sql connection
    SqlConnection mySQLconnection = new SqlConnection(connectionString);

    //open connection
    mySQLconnection.Open();

        //define command using text string
        SqlCommand mySqlCommand = new SqlCommand(sqlTester, mySQLconnection);
        SqlDataAdapter mySqlAdapter = new SqlDataAdapter(mySqlCommand);

        //create dataset to fill gridview with
        DataSet myDataSet = new DataSet();
        mySqlAdapter.Fill(myDataSet);

        //fill gridview
        GridView1.DataSource = myDataSet;
        GridView1.DataBind();
        viewstate.add("myDataSet",myDataSet);

    //close the sql connection
    mySQLconnection.Close();
}

В событии изменения индекса страницы сделайте это ... защищенный void GridView1_PageIndexChanging (отправитель объекта, GridViewPageEventArgs e) { GridView1.PageIndex = e.NewPageIndex; GridView.datasource = (DataTable) ViewState [ "myDataSet"); GridView.DataBind (); }

Использовать сеанс, если viewstate выдает некоторую ошибку в отношении сериализации. Это сделает ваш код более эффективным и оптимизированным.

...