.net objectdatasource insertparameter值
我有一个带有此代码的页面prueba.aspx.net objectdatasource insertparameter值,.net,parameters,objectdatasource,.net,Parameters,Objectdatasource,我有一个带有此代码的页面prueba.aspx protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { try { Object ob = CPUSControl1.FindControl("ObjectDataSourcecpus"); ObjectDataSource ods = (ob != nul
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
Object ob = CPUSControl1.FindControl("ObjectDataSourcecpus");
ObjectDataSource ods = (ob != null && ob.GetType() == typeof(ObjectDataSource)) ? (ObjectDataSource)ob : null;
if (ods != null)
{
ods.SelectParameters.Clear();
ods.SelectParameters.Add("usuario", DropDownListUsuarios.SelectedValue.ToString().Trim());
ods.InsertParameters.Add("usuario", DropDownListUsuarios.SelectedValue.ToString().Trim());
}
}
catch (Exception error)
{
throw error;
}
}
CPUSControl1是此页面中的一个usercontrol,它的find ok,objectdatasource如果find ok也是。即使取消选择的参数也可以正常工作,但我添加的insertparameter不起作用。我试图一步一步地更改名称、调试和编辑,insertparameters始终采用默认值(0)
objectdatasource是这样的
<asp:ObjectDataSource ID="ObjectDataSourcecpus" runat="server"
SelectMethod="getCPUs" TypeName="CPU" InsertMethod="saveCPUs">
<SelectParameters>
<asp:Parameter Name="usuario" DefaultValue="0" Type="String" />
</SelectParameters>
<InsertParameters>
<asp:Parameter Name="usuario" DefaultValue="0" Type="String" />
<asp:Parameter Name="Codigo" Type="String" />
<asp:Parameter Name="NroSerie" Type="String" />
<asp:Parameter Name="TipoCPU" Type="String" />
<asp:Parameter Name="Mother" Type="String" />
<asp:Parameter Name="Modelo" Type="String" />
<asp:Parameter Name="Procesador" Type="String" />
<asp:Parameter Name="Memoria" Type="String" />
<asp:Parameter Name="Proveedor" Type="Int32" />
<asp:Parameter Name="BocaRed" Type="String" />
<asp:Parameter Name="IP" Type="String" />
<asp:Parameter Name="UPS" Type="Int32" />
<asp:Parameter Name="VtoGarantia" Type="DateTime" />
<asp:Parameter Name="FechaCompra" Type="DateTime" />
<asp:Parameter Name="NombreEquipo" Type="String" />
<asp:Parameter Name="USB" Type="String" />
<asp:Parameter Name="Obs" Type="String" />
<asp:Parameter Name="Marcacion" Type="String" />
<asp:Parameter Name="TipoCPU1" Type="Int32" />
<asp:Parameter Name="fechaentrada" Type="DateTime" />
<asp:Parameter Name="fechasalida" Type="DateTime" />
</InsertParameters>
</asp:ObjectDataSource>
我有义务添加ods.SelectParameters.Clear();但不是ods.InsertedParameters.Clear();
为什么?
我猜这是因为我从未添加insertparameters,但我猜不出原因。
提前谢谢。请原谅我的英语不好试试这样:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
ObjectDataSource ods = CPUSControl1.FindControl("ObjectDataSourcecpus") as ObjectDataSource;
if (ods != null)
{
string value = DropDownListUsuarios.SelectedValue.Trim();
ods.SelectParameters["usuario"].DefaultValue = value;
ods.InsertParameters["usuario"].DefaultValue = value;
}
}
对代码的更改:
- 如果您不打算对异常执行任何操作,请不要捕获异常。(如果必须重新抛出异常,请使用
而不是throw;
来保留堆栈跟踪。)throw error;
- 用于引用类型的条件转换-它比调用
并将结果与特定类型进行比较更有效.GetType()
属性已经是一个SelectedValue
-无需对其调用字符串
.ToString()
- 调用
创建一个新字符串;最好将结果缓存在局部变量中并重用它.Trim()
- 您已经通过标记将参数添加到
和SelectParameters
集合中。您只需检索现有的InsertParameters
对象并设置其参数
属性DefaultValue
编辑:
InsertParameters
集合不会在ViewState
中存储更改,因此回发时会丢失该值。最简单的解决方案可能是使用插入
事件来设置参数值:
主页(代码隐藏):
用户控制:
听起来你想要一个-不需要自定义代码!你好,理查德,谢谢你的回复。我尝试使用ControlParameter,但dropdownlist位于包含usercontrol的页面中。因此,我无法从usercontrol中的objectdatasource指向它。另外,我认为从usercontrol指向主页面是一个相当大的问题。我在usercontrol中添加了两个标签,并将其放入pageload保护的空页加载(object sender,EventArgs e){Label2.Text=ObjectDataSourcecpus.InsertParameters[“Usario”].DefaultValue.ToString();Label3.Text=ObjectDataSourcecpus.SelectParameters[“usuario”].DefaultValue.ToString();}SelectParameters填充标签ok,insertparameters从不填充标签。因此,我在设置de insertparameters之后添加了一个断点,“usuario”仍然为0,好像我无法更改它。我发现有很多人这样做的例子。。。我真的不明白…谢谢你的回答!我已经复制并粘贴了这个,感谢现在我得到了错误CPU“”不包含名为“usuario”的属性。现在,请告诉我,我不能用user selectparameters和insertparameters将变量传递给CPU类的get或save方法吗?@llocani:听起来你好像在试图使用usercontrol中的某个地方。您不需要这样做,因为您已经设置了参数的
DefaultValue
。
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
CPUSControl1.Usuario = DropDownListUsuarios.SelectedValue.Trim();
}
<asp:ObjectDataSource ID="ObjectDataSourcecpus" runat="server"
SelectMethod="getCPUs" TypeName="CPU" InsertMethod="saveCPUs"
OnSelecting="DataSourceCallingMethod"
OnInserting="DataSourceCallingMethod"
OnUpdating="DataSourceCallingMethod"
OnDeleting="DataSourceCallingMethod"
>
...
public string Usuario
{
get { return (string)ViewState["Usuario"]; }
set { ViewState["Usuario"] = value; }
}
protected void DataSourceCallingMethod(object sender, ObjectDataSourceMethodEventArgs e)
{
e.InputParameters["usuario"] = Usuario;
}