2013-01-08 154 views
0

我寫了一個方法,它從數據庫中檢索數據,並返回包含三個列的數據表向Gridview添加編輯按鈕

此數據表我綁定到gridview控件後隱藏ID字段

 DataTable dt = _qbObj.getAllTags(); 
     dvTags.DataSource = dt; 

     BoundField bfName = new BoundField(); 
     bfName.DataField = dt.Columns["Name"].ToString(); 
     bfName.HeaderText = "Name"; 

     BoundField bfId = new BoundField(); 
     bfId.DataField = dt.Columns["ID"].ToString(); 
     bfId.Visible = false; 

     BoundField bfDesc = new BoundField(); 
     bfDesc.DataField = dt.Columns["Description"].ToString(); 
     bfDesc.HeaderText = "Description";    

     dvTags.Columns.Add(bfId); 
     dvTags.Columns.Add(bfName); 
     dvTags.Columns.Add(bfDesc); 
     dvTags.DataBind(); 

對此GridView控件,我要添加編輯按鈕,這應該彈出一個jQuery模態對話框,在這裏我可以進入更新的詳細信息。

我意識到我可以去一個,但問題是我需要彈出該模式對話框,而不刷新頁面,並且不完全支持腳本。

所以在我的gridview插入這個,項目模板

 <asp:GridView ID="dvTags" runat="server" CssClass="labs-grid-view" 
      AutoGenerateColumns="False" > 
      <Columns> 
       <asp:TemplateField> 
        <ItemTemplate> 
         <asp:Button ID="btnEdit" runat="server" Text="Edit" OnClick="dvTagEdit" CommandName="UpdateRecord" 
          CommandArgument='<%# Eval("ID") %>' /> 
        </ItemTemplate> 
       </asp:TemplateField>         
      </Columns> 
     </asp:GridView> 

現在我做編輯GridView控件不自動更新,所以我有一個專門的刷新格按鈕,刪除現有的「動態插入的列」使用這個代碼後: -

 int noOfRows = dvTags.Columns.Count; 
     if (noOfRows > 1) 
     { 
      dvTags.Columns.RemoveAt(noOfRows - 1); 
      dvTags.Columns.RemoveAt(noOfRows - 2); 
      dvTags.Columns.RemoveAt(noOfRows - 3); 
      // THERE ARE A TOTAL OF **THREE** COLUMNS 
     } 

但問題是,刷新頁面幾次後,我的ItemTemplate模板內按鈕消失,在html替換爲「 」

請幫我找到錯誤。我認爲有一個更好,更簡單的方法來實現這一點。如果是的話,我向他們開放。

感謝您的閱讀,

Abijeet。

回答

1

有幾件事情要考慮:

首先,你可以背後發佈您的代碼爲你的ItemCommand事件,這是渲染模式彈出,並正在執行的更新?這可能是因爲編輯後的刷新沒有正確處理。其次,不要在GridView上進行「內聯」數據綁定,而應考慮在GridView中使用RowDataBound事件。您可以檢測正在生成的行(標題,數據,頁腳),並且您可以在其中正確創建編輯按鈕。更好的是,你可以在這個方法中訪問你的按鈕,並簡單地將CommandArgument設置爲你的ID。第三,在GridView中使用asp按鈕時,點擊時會觸發「ItemCommand」事件,這將導致回發。

我建議在你的模板列中有一個簡單的鏈接,或者你可以用來觸發一個jQuery模式的東西,並且你可以爲你的項目設置一個靜態命名約定,以便正確檢索要放入你的數據模式彈出窗口進行編輯。然後從那裏你應該能夠正常處理你的更新。

我希望在這裏有所幫助。