<asp:GridView ID="gvSelect" runat="server" AutoGenerateColumns="False" EmptyDataText="没有查询界面"
              Width="100%" DataKeyNames="FieldName,TableName,UserID,FieldType" OnRowDataBound="gvSelect_RowDataBound">
              <Columns>
                  <asp:BoundField DataField="Chinesename" HeaderText="属性" />
                  <asp:TemplateField HeaderText="查询顺序">
                     <ItemTemplate>
                        <asp:DropDownList ID="ddlQuery" runat="server" AutoPostBack="true" ToolTip='<%# bind("QueryOrder") %>' OnSelectedIndexChanged="DropDownListQuery_SelectedIndexChanged"></asp:DropDownList>
                     </ItemTemplate>
                  </asp:TemplateField>
              </Columns>
              <HeaderStyle CssClass="ColumnHeader" BackColor="#73A0C1"  />
                <RowStyle CssClass="NormalRow" BackColor="#C0C0FF"  />
                <AlternatingRowStyle CssClass="AlternatingRow" BackColor="#E0E0E0"  />
          </asp:GridView>protected void gvSelect_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowType != DataControlRowType.DataRow)
                {
                    return;
                }
                DataSet dsTemp = getDataSetByType(OrderType.Query);
                if (dsTemp == null || dsTemp.Tables.Count <= 0)
                {
                    return;
                }
                DropDownList ddl = (DropDownList)e.Row.FindControl("ddlQuery");
                if (ddl == null)
                {
                    return;
                }                //important code
                foreach (DataRow row in dsTemp.Tables[0].Rows)
                {
                    ddl.Items.Add(new ListItem(row["QueryOrder"].ToString(), row["QueryOrder"].ToString()));
                }
                //set value
                DataRowView dv = (DataRowView)e.Row.DataItem;
                ddl.SelectedValue = dv["QueryOrder"].ToString();            }
            catch { }
        }

解决方案 »

  1.   

    异常详细信息:  System.Web.HttpException: DataBinder.Eval:“System.Data.DataRowView”不包含名称为 RoleName 的属性。
    dl.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"RoleName"))).Selected=true;//选择数据库内的作为默认  现在就这句有问题
      

  2.   

    :“System.Data.DataRowView”不包含名称为 Schedule 的属性。
    <asp:Label ID="L" runat ="server" Text ='<%# DataBinder.Eval(Container.DataItem, "Schedule") %>' >
    </asp:Label>
    这个怎么有问题?
      

  3.   

    这是代码请高手指出问题 谢谢
    string  conStr = ConfigurationSettings.AppSettings["connString"];
    string strdb = e.Item.Cells[2].Text.ToString();
                string strid = e.Item.Cells[1].Text.ToString();
    string strLy = e.Item.Cells[3].Text.ToString();
    SqlConnection cxconn=new SqlConnection( conStr);
    string strsql= "select * from Shops ";
    SqlDataAdapter  da = new SqlDataAdapter(strsql,cxconn);
    DataSet ds=new DataSet();
    da.Fill(ds,"table1");
    SqlConnection myConnection = new SqlConnection(conStr);
    myConnection.Open();
    if(e.Item.ItemType==ListItemType.EditItem)
    {         
    DropDownList ddl=(DropDownList)e.Item.FindControl("d1");
    ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByText(strid));
    ddl.DataSource=ds.Tables["table1"];
    ddl.DataTextField="ShopName";
    ddl.DataValueField="ShopName";
    ddl.DataBind();
    ddl.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"Shop"))).Selected=true;//选择数据库内的作为默认
    }
    myConnection.Close();
    //取得**
    SqlConnection Lyconn=new SqlConnection( conStr);
    string strsql1= "select Schedule from BasicInformation ";
    SqlDataAdapter  Ly = new SqlDataAdapter(strsql1,Lyconn);
    DataSet ds2=new DataSet();
    Ly.Fill(ds2,"table2");
    SqlConnection myConnection1 = new SqlConnection(conStr);
    myConnection1.Open();
    SqlCommand cmdLy = new SqlCommand("select * from BasicInformation where ShopName ='" + strdb +"'", myConnection1);
    SqlDataReader Dr2 = cmdLy.ExecuteReader(); if(e.Item.ItemType==ListItemType.EditItem)
    {         
    DropDownList dl=(DropDownList)e.Item.FindControl("L1");
    dl.SelectedIndex = dl.Items.IndexOf(dl.Items.FindByText(strid));
    dl.DataSource=ds2.Tables["table2"];
    dl.DataTextField="Schedule";
    dl.DataValueField="Schedule";
    dl.DataBind();
    // dl.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"RoleName"))).Selected=true;//选择数据库内的作为默认
    }
    myConnection1.Close();