代码如下
前台:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:datagrid id="dg" runat="server" Width="100%"  AutoGenerateColumns="False">
       <SelectedItemStyle BackColor="#FFC080"></SelectedItemStyle>
       <HeaderStyle BackColor="#C0C000"></HeaderStyle>
       <Columns>
        <asp:BoundColumn DataField="xuehao" HeaderText="xuehao">
              <HeaderStyle Width="30%"></HeaderStyle>
          </asp:BoundColumn>
           <asp:BoundColumn DataField="xingming" HeaderText="xingming">
              <HeaderStyle Width="30%"></HeaderStyle>
          </asp:BoundColumn>
          <asp:TemplateColumn HeaderText="权限" HeaderStyle-Width="40%"> 
            <ItemTemplate>
              <asp:DropDownList ID="quanxian" Runat="server" Width="100" DataTextField="xuehao" 
DataValueField="xingming"></asp:DropDownList>  
            </ItemTemplate>
          </asp:TemplateColumn> 
                    
       </Columns>
       <PagerStyle Visible="False"></PagerStyle>
      </asp:datagrid>
      </div>
    </form>
</body>
</html>
后台:
using System;
using System.Data;
using System.Configuration;
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 System.Data.OleDb;public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            banding();
        }
    }
    void banding()
    {
        OleDbConnection Conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("../database/person.mdb"));
        string strSQL = "select top 10 * from grade";
        OleDbCommand Comm = new OleDbCommand(strSQL, Conn);
        OleDbDataAdapter da = new OleDbDataAdapter();
        da.SelectCommand = Comm;
        Conn.Open();
        DataSet ds = new DataSet();
        da.Fill(ds, "grade");
        dg.DataSource = ds.Tables["grade"].DefaultView;
        dg.DataBind();
        Conn.Close(); 
    }
    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
        OleDbConnection Conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("../database/person.mdb"));
        string strSQL = "select top 5 * from grade";
        OleDbCommand Comm = new OleDbCommand(strSQL, Conn);
        OleDbDataAdapter da = new OleDbDataAdapter();
        da.SelectCommand = Comm;
        Conn.Open();
        DataSet ds = new DataSet();
        da.Fill(ds, "grade");
        if (e.Item.ItemType == ListItemType.Item)
        {
            DropDownList ddl = (DropDownList)e.Item.FindControl("quanxian");
            ddl.DataSource = ds.Tables["grade"].DefaultView;
            //ddl.DataTextField = "xingming";
            ddl.DataTextField = "chengji";
            ddl.DataValueField = "xuehao";
            ddl.DataBind();
            ddl.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem, "xuehao"))).Selected = true;//选择数据库内的作为默认
        }
    }}

解决方案 »

  1.   

        <asp:DropDownList   ID= "quanxian "   Runat= "server "   Width= "100 "   DataTextField= "xuehao "   
    DataValueField= "xingming "> </asp:DropDownList>     
                            ddl.DataTextField   =   "chengji "; 
                            ddl.DataValueField   =   "xuehao "; 
    前后台不一至了你只要后台代码就可以了
    前台的DataTextField= "xuehao "   
    DataValueField= "xingming " 属性可以略掉了
      

  2.   

    要是确定能DropDownList   ddl   =   (DropDownList)e.Item.FindControl( "quanxian "); 
    dll不为空 那么就是楼上说的原因了
      

  3.   

    直接在前台加上DataSource="<%# ddlGradeBind() %>" ,不要DataGrid1_ItemDataBound也好。
      

  4.   

    有知道的吗。我试了。在前台  <asp:datagrid   id= "dg "   runat= "server "   Width= "100% "     AutoGenerateColumns= "False "> 里 加上 OnItemCommand="DataGrid1_ItemDataBound"还他妈编译不过去了。