0

我有一种情况,我已经工作了几个小时 - 我觉得这里有一些非常明显的东西,但我错过了它。我从来没有在如此抽象的开发环境中工作过,所以我确信这是其中的一部分。任何帮助/建议将不胜感激。

  • 产品:网络应用程序

  • 环境:

    ~数据库/后端;SQL Server 管理工作室,SQL Server 2008 R2

    ~接口/前端;ASPX 页面,SharePoint 2010

    语言,发展;Visual Studio 2010、VB.Net、JavaScript、HTML、SQL、Ajax、jQuery

    杂项;Web 部件、更新面板等

  • 任务和问题:

更新 aspx.cs 上的文本框代码,该代码显示具有组织名称的组织代码(当前仅显示名称)。文本框当前显示组织名称。代码从 SQL Server 调用存储过程,该过程传入所需的列和数据。

到目前为止,我已经能够更新代码,以便您可以开始输入组织代码或组织名称,并且组织列表将以下拉方式填充。无论使用组织代码还是名称,列表和结果选择中仅显示组织名称。我需要它来显示组织代码和名称。

到目前为止我的代码是这样的:

using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Text;
using System.Data.SqlClient;
using System.Collections.Generic;
using IDE_Utility.DBConnection;

namespace ORG40.Layouts.ORG40
{
    public partial class OrganizationSearch : LayoutsPageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void GetCompleteList(object sender, EventArgs e)
        {

            DataSet DS = new DataSet();

            SqlParameter sqlParamComp = new SqlParameter();
            sqlParamComp.ParameterName = "@oName";
            sqlParamComp.DbType = DbType.String;
            sqlParamComp.Value = "%" + OrganizationName.Text + "%";

            SqlParameter[] sqlParams = new SqlParameter[]{
                new SqlParameter("@orgCode", DBNull.Value),                
                sqlParamComp
            };

            DS = DBConnection.GetDataSet("getL_Organization", CommandType.StoredProcedure, sqlParams);
            GridView1.DataSource = DS;
            GridView1.DataBind();



        }
        [System.Web.Script.Services.ScriptMethod()]
        [System.Web.Services.WebMethod]
        public static string[] getNames(string prefixText, int count)
        {
            DataSet DS = new DataSet();
            SqlParameter sqlParamComp = new SqlParameter();
            sqlParamComp.ParameterName = "@oName";
            sqlParamComp.DbType = DbType.String;
            sqlParamComp.Value = "%" + prefixText + "%";

            SqlParameter[] sqlParams = new SqlParameter[]{
                new SqlParameter("@orgCode", DBNull.Value),                
                sqlParamComp
            };

            DS = DBConnection.GetDataSet("getL_Organization", CommandType.StoredProcedure, sqlParams);


            DataTable Dt = new DataTable();
            Dt = DS.Tables[0].DefaultView.ToTable(true, new string[] {"OrgCode", "Name"});
            DataRow[] Dr = new DataRow[Dt.Rows.Count];
            Dt.Rows.CopyTo(Dr, 0);
            return Array.ConvertAll(Dr, new Converter<DataRow, String>(DataRowToString));

        }

        public static string DataRowToString(DataRow pDr)
        {
            return Convert.ToString(pDr["OrgCode" "Name"].ToString());
        }
    }
}

我觉得答案介于两者之间:

Dt = DS.Tables[0].DefaultView.ToTable(true, new string[] {"OrgCode", "Name"});

并从数组返回线:

return Convert.ToString(pDr["OrgCode" "Name"].ToString());

我在想我的问题是试图从最后一行显示组织代码。如果我只使用“名称”它可以工作,但每次我修改它时,文本框什么都不显示,或者代码有误。

我最近的想法是关于最后一行代码 - 我意识到return Convert.ToString(pDr["OrgCode" "Name"]语法不正确 - 我一直在尝试确定如何正确考虑["OrgCode" "Name"].

如果有任何想法或想法,我将不胜感激。

谢谢!

4

1 回答 1

1

我也在 ASP.NET 论坛上问过这个问题,并在那里得到了答案。我挣扎的最后一行:

return Convert.ToString(pDr["OrgCode" "Name"].ToString());

设置为:

return (Convert.ToString(pDr["OrgCode"]) + " " + Convert.ToString(pDr["Name"]));

像冠军一样工作!感谢所有审查此问题的人!

于 2013-06-05T18:19:20.310 回答