GridView выбирает неправильную строку для редактирования - PullRequest
1 голос
/ 09 апреля 2011

У меня есть простая админ-панель с простым видом сетки, в которой перечислены все статьи, присутствующие в базе данных.

Я добавил фильтрующий рисунок (текстовое поле + кнопка), который позволяет пользователю фильтровать вид сеткипо названию статьи.

Код фильтра:

    protected void ButtonSearchArticle_Click(object sender, EventArgs e)
    {
        {
            LinqDataSourceAdminArticles.Where = "Title.Contains(" + "\"" + TextBoxSearchArticle.Text + "\")";
            LinqDataSourceAdminArticles.DataBind();
        }
        LinqDataSourceAdminArticles.DataBind();
    }

В сетке просмотра включено быстрое редактирование и удаление по умолчанию.Проблема в том, что после того, как я отфильтрую его по этому коду, он начинает выбирать неправильные строки, когда я нажимаю кнопку «Редактировать».Есть идеи как решить это?Я знаю, что это как-то связано с обратной передачей.

Я проверил Почему My GridView FooterRow ссылается на неправильную строку? и Сортированный вид сетки выбирает неправильную строку , ноэто не решило мою проблему.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 09 апреля 2011

Когда вы изменяете запрос выбора GridView при нажатии кнопки, он действует только для этого запроса.потому что команда редактирования GridView вызывает обратную передачу, а в обратной передаче Gridview работает с видимым индексом отредактированной строки, но без фильтрации.Лучше всего удалить код ButtonSearchArticle_Click и вставить его в свой код Page_Load следующим образом:

 if (TextBoxSearchArticle.Text != ""){
        LinqDataSourceAdminArticles.Where = "Title.Contains(" + "\"" + TextBoxSearchArticle.Text + "\")";
        LinqDataSourceAdminArticles.DataBind();

    LinqDataSourceAdminArticles.DataBind();}
0 голосов
/ 23 февраля 2016
//Your Page Load Event    
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Session["s_event"] = "0"; // Initialize session variable
            BindData(); // Gridview Binding
        }

    } 

 protected void BindData()
    {
        if ((Session["s_event"].ToString())=="1")
        {
            cmdstr_ = (Session["search_item"].ToString());
        }
        else
        {
            cmdstr_ = ""; // Your command string to populate gridview

        }
        //        `enter code here`
    }

 protected void btnSearch_Click(object sender, EventArgs e)
    {
        Session["s_event"] = 1; // Search Event becomes 1.

        // Your Search Logic here

        Session["search_item"] = cmdstr;

        // Bind Gridview here

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