2009-08-25 2 views
0

응용 프로그램을 거의 완료하면 마지막으로 한 가지가 저를 방해합니다. 두 개 이상의 데이터 소스가있는 동적 그리드

내가 드롭 다운 목록에서 항목을 선택

는 GridView1의 열은 다음과 같이 두 번을 보이고있다 : 이것은 내 코드 숨김입니다

<%@ Page Language="C#" MasterPageFile="~/MasterPage.Master" AutoEventWireup="true" CodeBehind="WebmasterControlPanel.aspx.cs" Inherits="Ice_Web_Portal.UI.Webmaster.WebmasterControlPanel" Title="Untitled Page" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
    <table style="width: 288px"> 
     <tr> 
      <td valign="top"> 
       <asp:DropDownList ID="tableNamesDropDownList1" runat="server" DataSourceID="UserTablesObjectDataSource1" 
        DataTextField="TableName" DataValueField="TableName" Width="256px" OnSelectedIndexChanged="tableNamesDropDownList1_SelectedIndexChanged" AutoPostBack="True"> 
       </asp:DropDownList><br /> 
       <asp:ObjectDataSource ID="UserTablesObjectDataSource1" runat="server" 
        SelectMethod="GetAllUserTableNames" TypeName="Ice_Web_Portal.BO.DBTables"></asp:ObjectDataSource> 
      </td> 
      <td style="width: 3px"> 
       &nbsp;</td> 
      <td> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <asp:GridView ID="GridView1" runat="server" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowCommand="GridView1_RowCommand" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating"> 
       </asp:GridView> 
      </td> 
      <td style="width: 3px"> 
      </td> 
      <td> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      </td> 
      <td style="width: 3px"> 
      </td> 
      <td> 
      </td> 
     </tr> 
    </table> 
</asp:Content> 

:

alt text

이 내 영문 파일입니다 :

using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 


using System.Web.UI.HtmlControls; 

using Ice_Web_Portal.BO; 
using Ice_Web_Portal.ASP.NET.Utils; 

namespace Ice_Web_Portal.UI.Webmaster 
{ 
    public partial class WebmasterControlPanel : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     protected void tableNamesDropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      CreateGridView(); 
     } 

     protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
     { 
      int index = Convert.ToInt32(e.CommandArgument); 

      if (e.CommandName == "Edit") 
      { 
       GridView1.EditIndex = index; 

       GridViewRow selectedRow = ((GridView)e.CommandSource).Rows[index]; 

       string id = selectedRow.Cells[1].Text; 
       string isbn = selectedRow.Cells[2].Text; 

       CreateGridView(); 
      } 
      else if (e.CommandName == "Update") 
      {     
       LinkButton updateButton = (LinkButton)e.CommandSource; 

       DataControlFieldCell dcfc = (DataControlFieldCell)updateButton.Parent; 

       GridViewRow gvr = (GridViewRow)dcfc.Parent; 

       ControlCollection cc = gvr.Cells[1].Controls; 

       TextBox tb = (TextBox)cc[0]; 

       GridView1.EditIndex = -1; 

       CreateGridView(); 
      } 
     } 

     private void UpdateTableData() 
     { 
     } 

     private void CreateGridView() 
     { 
      GridView1.Columns.Clear(); 

      string tableName = tableNamesDropDownList1.SelectedItem.Text; 

      TableNameEnum tableType = TableNameEnumUtility.ConvertToEnum(tableName); 

      DataTable dataTable = null; 

      if (tableType == TableNameEnum.Book) 
      { 
       dataTable = Book.GetBooksDataSet().Tables[0]; 
      } 
      else if (tableType == TableNameEnum.Course) 
      { 
       dataTable = Course.GetCoursesDataSet().Tables[0]; 
      } 
      else 
      { 
       dataTable = null; 
      } 

      //Adding Edit Button 
      CommandField cf = new CommandField(); 
      cf.ShowEditButton = true; 
      GridView1.Columns.Add(cf); 

      if (dataTable != null) 
      { 
       foreach (DataColumn c in dataTable.Columns) 
       { 
        BoundField boundField = new BoundField(); 

        boundField.DataField = c.ColumnName; 
        boundField.HeaderText = c.ColumnName; 

        GridView1.Columns.Add(boundField); 
       } 
      } 

      GridView1.DataSource = dataTable; 
      GridView1.DataBind(); 
     } 

     protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
     { 
     } 

     protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) 
     { 
     } 

     protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
     { 
     } 
    } 
} 

답변

1

자동 생성 열 세트 false로

<asp:GridView ID="GridView1" runat="server" 
... 
    AutoGenerateColumns="false"> 
         </asp:GridView> 

귀하의 gridview를 정의

관련 문제