gpt4 book ai didi

c# - 在 FormView 中插入后获取返回值

转载 作者:行者123 更新时间:2023-11-30 17:18:24 24 4
gpt4 key购买 nike

我需要在插入新项目后进入编辑模式。

OnItemInserted 方法:

protected void fvReport_ItemInserted(Object sender, FormViewInsertedEventArgs e)
{
if (e.Exception == null)
{
if (Session["id"] != null)
{
ObjectReport.SelectParameters["id"].DefaultValue = Session["id"].ToString();
}
fvReport.ChangeMode(FormViewMode.ReadOnly);
}
}

对象数据源:

<asp:ObjectDataSource ID="ObjectReport" runat="server"
TypeName = "ObjectDataSources.CS.ConnectionToDB"
SelectMethod = "GetReportById" InsertMethod="InsertReport" OnInserted="ObjectReport_Inserted">
<SelectParameters>
<asp:Parameter Name="id" Type = "Int32" />
</SelectParameters>
<InsertParameters>
<asp:Parameter Name="id" Type="Int32" Direction="Output" />
<asp:Parameter Name="report_name" Type="String" />
<asp:Parameter Name="customer" Type="String" ConvertEmptyStringToNull="true" />
<asp:Parameter Name="assignment" Type="String" ConvertEmptyStringToNull="true" />
<asp:Parameter Name="report_type" Type="String" ConvertEmptyStringToNull="true" />
<asp:Parameter Name="system" Type="String" ConvertEmptyStringToNull="true" />
<asp:Parameter Name="setting" Type="String" ConvertEmptyStringToNull="true" />
</InsertParameters>
</asp:ObjectDataSource>

protected void ObjectReport_Inserted(object sender, ObjectDataSourceStatusEventArgs e)
{
Session["id"] = e.OutputParameters["id"].ToString();
}

插入方法:

public void InsertReport(out int id, string report_name, 
string customer, string assignment,
string report_type, string system, string setting)
{
SqlConnection conn = new SqlConnection(_connectionString);
SqlCommand cmd = new SqlCommand("INSERT INTO main_report ("report_name,customer,assignment,report_type, " +
"system,setting) VALUES ("@report_name,@customer,@assignment, " +
"@report_type,@system,@setting); " +
"SELECT @id = SCOPE_IDENTITY() ", conn);
cmd.Parameters.Add("@report_name", SqlDbType.VarChar, 255).Value = report_name;
cmd.Parameters.Add("@customer", SqlDbType.VarChar, 255).Value = customer;
cmd.Parameters.Add("@assignment", SqlDbType.VarChar, 255).Value = assignment;
cmd.Parameters.Add("@report_type", SqlDbType.VarChar, 50).Value = report_type;
cmd.Parameters.Add("@system", SqlDbType.VarChar, 3).Value = system;
cmd.Parameters.Add("@setting", SqlDbType.VarChar, 255).Value = setting;
SqlParameter p = cmd.Parameters.Add("@id", SqlDbType.Int);
p.Direction = ParameterDirection.Output;
id = 0;
conn.Open();
cmd.ExecuteNonQuery();
id = (int)p.Value;
conn.Close();

当我尝试插入时,我收到下一个异常:

Session["id"] = e.OutputParameters["id"].ToString(); -  Object reference not set to an instance of an object.

为什么输出参数为空?我做错了什么?

最佳答案

您可以从您的方法中返回值并可以像...一样访问它

public Int InsertReport(............)
{
....
....
return Id
}

然后在插入的函数中,可以通过e.ReturnValue访问它

Session["id"] = Convert.ToString(e.ReturnValue);

关于c# - 在 FormView 中插入后获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5792899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com