【问题标题】:A field or property with the name 'ApproveID' was not found on the selected data source在所选数据源上找不到名为“ApproveID”的字段或属性
【发布时间】:2013-10-04 15:23:55
【问题描述】:

我尝试在 grdiview 的下拉列表中添加批准类型值

网格视图

<asp:BoundField HeaderText="ApproveID" DataField="ApproveID"></asp:BoundField>
            <asp:TemplateField>
                <ItemTemplate>


                    <asp:DropDownList ID="DropDownList4" runat="server" 
                  class="vpb_dropdown">
                    </asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>

SQL

ALTER procedure [dbo].[viewdocid]
as
select dbo.DocumentInfo.DocID,dbo.DocumentInfo.DocName,dbo.DocumentInfo.Uploadfile,dbo.DocType.DocType,dbo.Department.DepType
from dbo.DocumentInfo left join dbo.DocType on dbo.DocumentInfo.DocTypeID=dbo.DocType.DocTypeID left join  
dbo.Department on dbo.DocumentInfo.DepID=dbo.Department.DepID

C#

 protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //Find the DropDownList in the Row
            DropDownList ddlvalue = (e.Row.FindControl("DropDownList4") as 
             DropDownList);
           ddlvalue .DataSource = GetData("SELECT ApproveID,ApproveType FROM 
            ApproveType");
            ddlvalue .DataTextField = "ApproveType";
           ddlvalue .DataValueField = "ApproveID";
           ddlvalue .DataBind();

            //Add Default Item in the DropDownList
            ddlvalue.Items.Insert(0, new ListItem("Please select"));

            //Select the Country of Customer in DropDownList
            //string country = (e.Row.FindControl("lblCountry") as Label).Text;
            //ddlvalue.Items.FindByValue(country).Selected = true;
        }
    }

我在页面加载中添加此代码

            GrdFileApprove.DataSource = dd.gdocid();
            GrdFileApprove.DataBind();

由于文档表中没有approveid 列,这仅在approval 表中。 我尝试在gridview的下拉列表中显示approve.reject和pending

当我调试代码时,它显示页面加载代码中的错误..

A field or property with the name 'ApproveID' was not found on the selected data source.

【问题讨论】:

    标签: c# asp.net sql


    【解决方案1】:

    您绑定到网格视图的数据源不包含 Arrpove 类型的列。所以显然您会收到该错误。

    您需要使用表之间的连接来获取 Approve id

    一个网格视图一次只能保存一个结果集

    ALTER procedure [dbo].[viewdocid]
    as
    select A.ApproveID,A.ApproveType dbo.DocumentInfo.DocID,dbo.DocumentInfo.DocName,dbo.DocumentInfo.Uploadfile,dbo.DocType.DocType,dbo.Department.DepType
    from dbo.DocumentInfo left join dbo.DocType on dbo.DocumentInfo.DocTypeID=dbo.DocType.DocTypeID left join  
    dbo.Department on dbo.DocumentInfo.DepID=dbo.Department.DepID
    left join dbo.ApproveType A on dbo.DocumentInfo.DocID=A.Approvetype
    

    希望这会有所帮助..

    【讨论】:

      【解决方案2】:

      您需要在结果集中出现ApproveID 列。也就是说,将列包含在SELECT 中。如果它在被连接的表中,您需要执行以下操作:

      select [JoinedTable].[Column] AS ApproveID ...
      

      【讨论】:

      • 我在上面提到的sp中添加了这个我创建新的?
      • 你可以将它添加到现有的
      • 你能说出这两个表的共同列是什么吗?
      • 这是对的吗?从 dbo 中选择 DocumentInfo.DocID,dbo.DocumentInfo.DocName,dbo.DocumentInfo.Uploadfile,dbo.DocType.DocType,dbo.Department.DepType ,dbo.ApproveType.ApproveType 作为 ApproveID .DocumentInfo 在 dbo.DocumentInfo.DocTypeID=dbo.DocType.DocTypeID 上左加入 dbo.DocType 在 dbo.DocumentInfo.DepID=dbo.Department.DepID 上左加入 dbo.Department
      • 从存储过程看来是DepID
      猜你喜欢
      • 2014-07-15
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多