【问题标题】:VB.NET to C# Sending parameters to an SQL datasource in code behindVB.NET 到 C# 在代码中将参数发送到 SQL 数据源
【发布时间】:2014-04-07 13:25:18
【问题描述】:

对C#一无所知,谁能帮我把这个vb代码翻译成C#。我尝试了许多在线转换器,但它们没有用。需要真正的专家.....我正在尝试将参数从后面的代码发送到 SQL 数据源。任何双语在这里:

    Dim searchBox_par As New Parameter()

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click


    Dim intCount As Integer
    Dim searchTxt = SearchBox.Text
    Dim arrText = Split(searchTxt)


    For intCount = 0 To UBound(arrText)

        searchBox_par.Name = "IDTextBox1"
        searchBox_par.Type = TypeCode.String
        searchBox_par.DefaultValue = arrText(intCount)

        SqlDataSource3.SelectParameters.Clear()
        SqlDataSource3.SelectParameters.Add(searchBox_par)
        GridView2.Visible = True


    Next

End Sub

【问题讨论】:

    标签: c# vb.net parameters code-behind


    【解决方案1】:

    它应该看起来像这样。 但是,请注意,您需要为单击 button1 添加事件处理程序。 类似:

    Button1.click += Button1_Click;
    

    还有一点让我困惑,你为什么要清除循环内的参数列表? 不应该是在你开始循环之前吗?

    Parameter searchBox_par = New Parameter();
    
    protedted void Button1_Click(object sender, System.EventArgse As) {
    
        Integer intCount;
        string searchTxt = SearchBox.Text;
        string[] arrText = Split(searchTxt);
    
        For(int intCount = 0; intCount < arrText.length; intCount++) {
    
            searchBox_par.Name = "IDTextBox1";
            searchBox_par.Type = TypeCode.String;
            searchBox_par.DefaultValue = arrText[intCount];
    
            SqlDataSource3.SelectParameters.Clear();
            SqlDataSource3.SelectParameters.Add(searchBox_par);
            GridView2.Visible = true;
        }
    }
    

    【讨论】:

    • 感谢您的回答。但是我收到以下错误: 1. 当前上下文中不存在名称拆分。 2.找不到类型参数。 3. System.Array 不包含长度定义。有什么帮助吗?
    • 抱歉,即时翻译没有注意到一些事情。 1. string[] arrText = Split(searchTxt);应该是 string[] arrText = searchTxt.Split(''); 2. type Parameter - 您可能需要将 Imports 语句转换为 Using 语句。它可能是 System.Data 命名空间或类似名称的一部分。 3.尝试长度而不是长度。
    • 谢谢。越来越近了.... 仍然没有找到类型参数。我将在一分钟内发布整个代码...
    • 这很奇怪。至少根据我的理解,参数应该在 System.Web.UI.WebControls.Parameter 命名空间中。也许最好试试 .NET Reflector,看看它能给你带来什么。
    • @ Zohar Peled 是的,System.Web.UI.WebControls 丢失了。现在代码运行良好。我将 SqlDataSource3.SelectParameters.Clear() 移到循环之外,但它引发了参数已声明的错误。
    【解决方案2】:

    这是运行良好的最终更新代码....谢谢大家的提示!

    using System;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.UI.WebControls;
    namespace Identity2_0
    {  
    public partial class Default : System.Web.UI.Page
    {
         protected void SearchBoxButton_Click(object sender, System.EventArgs e)
        {
            Parameter searchBox_par = new Parameter();
            string searchTxt = SearchBox.Text;
            string[] arrText = searchTxt.Split();
            searchBox_par.Name = "IDTextBox1";
            searchBox_par.Type = TypeCode.String; 
            for (int intCount = 0; intCount < arrText.Length; intCount++)
            {
                SqlDataSource1.SelectParameters.Clear(); 
                searchBox_par.DefaultValue = arrText[intCount];
                SqlDataSource1.SelectParameters.Add(searchBox_par);
            }
    
             GridView1.Visible = true;        }
    }
    

    }

    【讨论】:

    • 'Split' 调用不正确 - 使用 string[] arrText = searchTxt.Split(' ');
    • 另外,正如 Zohar 提到的,您需要事件连接 (Button1.Click += Button1_Click;)
    【解决方案3】:

    如果您在编译后的二进制文件上使用 .NET Reflector,它会为您将其反编译为 C#。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-19
      • 2014-09-15
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 2013-11-07
      相关资源
      最近更新 更多