当我差不多完成我的申请时,最后一件事让我感到不安。
当我从DropDown列表中选择一个Item时,GridView1的列会出现两次:
这是我的aspx文件:
<%@ 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">
</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>
这是我的代码隐藏:
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)
{
}
}
}
答案 0 :(得分:1)
尝试添加设置为false的自动生成列
<asp:GridView ID="GridView1" runat="server"
...
AutoGenerateColumns="false">
</asp:GridView>
定义你的gridview