带参数的静态DataTable方法

时间:2018-02-02 20:00:38

标签: c# asp.net

我需要使用sql查询绑定一个asp转发器,其中包含一个参数但我使用的是公共静态方法,因此我不知道如何将变量传递给此方法:

aspx webfile背后的代码:

protected void Page_Load(object sender, EventArgs e)
{
    this.DataAdmin();           
}

public void DataAdmin()
{
    /****Resultado is the repeater name    */
    Datatable dataAdmin = DescargarDocumentos.SolicitarDatosDocumento() ;
    Resultados.DataSource = dataAdmin;
    Resultados.DataBind();
}

课程背后的代码

public class DescargaDocumentos
{

    public static DataTable SolicitarDatosDocumentos()
    {
        /* */
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Conexion"].ConnectionString);
        SqlDataReader reader;
        conn.Open();
        SqlCommand vistadocumentos = new SqlCommand("ultimasolicitud", conn);
        vistadocumentos.CommandType = CommandType.StoredProcedure;

         /* i need to add the parameter here */
        vistadocumentos.Parameters.AddWithValue("@numero",numero);/*error is here because i cant get pass this parameter to a static method*/
        reader = vistadocumentos.ExecuteReader();
        DataTable test = null;
        if (reader.HasRows)
        {
            test = new DataTable("test");
            test.Load(reader);
        }
        reader.Close();
        conn.Close();
        return test;
    }
}

错误在变量号上,因为我不能“将变量numero”传递给静态方法,是否可以这样做?

btw这是存储过程(应该根据订单号返回文件名)

alter  procedure documentlist (
           @numero int
)
as
begin
    select 
    tipo_de_documento.tipo_documento,detalle_documentos.nombre_documento 
    from tipo_de_documento inner join has_tipo on 
    tipo_de_documento.numero=has_tipo.numero_tipo inner join 
    detalle_documentos 
    on has_tipo.id_detalle= detalle_documentos.id_detalle inner join 
    Documentos 
    on detalle_documentos.num_documento= documentos.num_documento where 
    documentos.num_solicitud=@numero

end

1 个答案:

答案 0 :(得分:2)

您应该指定应搜索“哪个文档”,也可以从文本框中搜索。

我建议进行以下更改:

int numeroDocumento;
if (!int.TryParse(txtNumeroDocumento.Text, out numeroDocumento))
{
    //Something here to sinalize that the "numeroDocumento" is not a number.
    return;
} 
Datatable dataAdmin = DescargarDocumentos.SolicitarDatosDocumento(numeroDocumento);

public static DataTable SolicitarDatosDocumentos(int numero)
//You need to make that method accept the "number" arg

另外,我建议您在此处发布时将您的变量名称从葡萄牙语/西班牙语翻译成英语。

  1. Número表示数字
  2. Documento表示文档
  3. Tipo de Documento表示DocumentType
  4. Vista表示查看
  5. Detalhe意味着细节
  6. Descarregar的意思是“Download / Load / something simillar”
  7. UltimaSolicitação表示LastRequest