簡體   English   中英

數據綁定不刷新 Gridview

[英]Databind not refreshing Gridview

我有一個 gridview,我在我的代碼隱藏中動態地進行數據綁定。 出於某種原因,並且僅當用戶從 gridview 中刪除一行時(使用自定義函數),在回發之后,gridview 不會刷新(刪除的值仍然存在)。 但是,如果用戶以任何其他方式(即添加項目、在另一個選項卡中選擇正確的項目等)刷新 gridview,則綁定得很好。

我在代碼隱藏中放置了斷點以查看發生了什么,顯然 gridview 綁定正確,而被刪除的項目不在 gridview.DataSource 中。

這是我的代碼,所以如果你看到我沒有看到的,請告訴我!

刪除行命令:

if (e.CommandName == "delete")
        {
            int selectedId = int.Parse(e.CommandArgument.ToString());
            //delete selected row from database
            var item = (Item)DataContext.Items.Where(item => item.ItemId == selectedId).Single();
            if (item != null)
            {
                DataContext.CompanyGoalPrograms.DeleteObject(item);
            }
            DataContext.SaveChanges();

            bindGridView(currentId); //firing, but not refreshing gv after postback
            // currentId is a static variable
        }

bindGridView方法(每隔一次調用一次,所以我認為問題不在這里):

protected void bindGridView(long thisId)
    {
        var query = from items in DataContext.Items
                    where items.SubSomething.Something.SomethingId == thisId && goals.SubSomething.YearId == selectedYearId //<--another static variable
                    select items;
        Gridview1.DataSource = from items in query.AsEnumerable()
                                    select new
                                    {
                                        items.Field1,
                                        items.Field2,
                                        items.Field3,
                                        Field4 = ((decimal)items.Field4).ToString("N2"),
                                        Field5 = ((decimal)items.Field5).ToString("N2"),
                                        Field6 = String.Format("{0:#,##0}", (long)items.Field6),
                                        Field7 = items.Field4 == null ? "$0.00" : ((decimal)items.Field7).ToString("C"),
                                    };
        Gridview1.DataBind();
     }

[編輯] 有趣的是,它不僅運行,而且當我在運行后檢查數據源的內容時(在調試時),實際上刪除的項目已從數據源中刪除,它只是不顯示對用戶的更改。

我解決了這個問題:

Gridview 設置了預定義的命令,例如“選擇”、“編輯”和“刪除”。 當我嘗試定義我自己的事件以使用命令名稱“刪除”運行時,程序將嘗試運行我的部分事件以及它的預定義事件。 這就是造成問題的原因。

這也完全是我的問題。 我將“刪除”作為 asp:ImageButton 的 CommandName 傳遞。 看到您的帖子后,我將其更改為通過“DeleteThis”並立即開始工作。 像這樣的保留字問題......!

感謝您在事后發布解決方案。 它至少幫助了一個人。

維克多·德爾普雷特

bindgridview 是否確定運行? 你有沒有在調試模式下運行它來驗證?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM