我有一种情况,我已经工作了几个小时 - 我觉得这里有一些非常明显的东西,但我错过了它。我从来没有在如此抽象的开发环境中工作过,所以我确信这是其中的一部分。任何帮助/建议将不胜感激。
产品:网络应用程序
环境:
~数据库/后端;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"]
.
如果有任何想法或想法,我将不胜感激。
谢谢!