【发布时间】:2016-01-31 08:14:33
【问题描述】:
我正在尝试使用带有两个参数的存储过程向 SQL DB 插入新行。我在第一列中使用了 asp.net gridview 和复选框,以便您可以选择该行。对于选择的每一行,它将插入提供 ProjectID 的新行。 CorpID 与查询字符串一起提供。我注释掉了我的代码中的一些行,因为它给了我错误,我不知道如何做剩下的。我正在关注 YouTube 上的视频来完成这项工作。在视频中,他们正在删除行,但我正在尝试插入行。如果有人想要视频的链接,那就是this。这是我的 DataAccessLayer 代码
public void AssociateCorpToProj(ProjectData pd)
{
using(SqlConnection cn = new SqlConnection(_dbConnection))
{
using(SqlCommand cm = new SqlCommand("InsertProjectEntity", cn))
{
cm.CommandType = CommandType.StoredProcedure;
cn.Open();
cm.Parameters.AddWithValue("@ProjectID", pd.ProjectID);
cm.Parameters.AddWithValue("@CorpID", pd.CorpID);
cm.ExecuteNonQuery();
cn.Close();
}
}
}
这是我的代码,用于调用 DataAccessLayer 中的方法
protected void btnAssociateProjects_Click(object sender, EventArgs e)
{
List < object > lstCorpProjAssoc = new List < object> ();
foreach(GridViewRow gvRow in gvProjects.Rows)
{
if (((CheckBox) gvRow.FindControl("cbInsert")).Checked)
{
string cID = ((Label) gvRow.FindControl("lblProjectID")).Text;
lstCorpProjAssoc.Add(cID);
}
}
foreach(ProjectData str in lstCorpProjAssoc)
{
DALSectionAccessData ap = new DALSectionAccessData(connString);
ProjectData pd = new ProjectData();
ap.AssociateCorpToProj(str);
}
}
如果有人认为他们需要存储过程的代码,就在这里。
INSERT INTO [dbo].[ProjectEntity]
([ProjectID],[CorpID])
VALUES
(@ProjectID, @CorpID)
另外,我正在使用的列表类
public class ProjectData
{
public string CompanyName { get; set; }
public int ProjectID { get; set; }
public int CorpID { get; set; }
}
如果您需要更多信息来回答问题,请告诉我。非常感谢任何帮助。
【问题讨论】:
-
问题是我在我正在使用的按钮的 onclick 中使用 List 字符串。错误是
"The best overloaded method match for SectionAccessData.AssociateCorpToProj(Entities.ProjectData) has some invalid arguments" -
List < string > lstCorpProjAssoc = new List < string > ();我认为你想添加一个 List所以像 List<ProjectData> lstCorpProjAssoc = new List<ProjectData>();这样的东西从那里将每个类对象添加到 List -
当我尝试这样做时,我得到了错误:
Cannot convert type 'Entities.ProjectData' to 'string'我在将标签文本放入 cID 的行中得到了这个错误。顺便说一句,我将 cID 设置为 ProjectData。所以现在那行代码是ProjectData cID = ((Label)gvRow.FindControl("Label2")).Text; -
声明 List
将把 List 保存为像这样的对象 List -
我没有错误以这种方式运行它,如果您没有在 ProjectData 的循环内创建新实例并将它的新实例加载到列表中,您将收到该错误。如果这是一个网络应用程序尝试将 Label2.text 值保存在隐藏字段或会话变量等检查视图状态以及该 Label2
标签: c# mysql asp.net sql-server stored-procedures