【问题标题】:asp.net Grid best approach to bindingasp.net Grid 最佳绑定方法
【发布时间】:2012-10-19 04:02:20
【问题描述】:

我正在使用以下代码绑定到 ASP.NET DataGrid。我有以下内容,它可以工作,但想知道这是否是最好的方法。我担心的几件事是我不需要打开连接,也没有使用 DataReader。请注意,这是写在我的页面后面的代码中。

             string strConn =  ConfigurationManager.ConnectionStrings["SQL1"].ConnectionString; 
             SqlDataSource DataSource1 = new SqlDataSource();  
             DataSource1.ConnectionString = strConn;
             DataSource1.SelectCommand = "SELECT * FROM tblTruck where LocId = @LocID ";     

             DataSource1.SelectParameters.Add(new Parameter("LocId", System.TypeCode.String, value));                 
             Grid1.DataSource = DataSource1.Select(DataSourceSelectArguments.Empty); 
             Grid1.Rebind();   

【问题讨论】:

    标签: asp.net datagrid


    【解决方案1】:

    在这种情况下,DataSource 控件处理建立连接、读取连接和解析返回的内部逻辑。这本身非常方便,但如果您需要更多控制,就会出现问题。

    从风格上讲,在 UI 中硬编码 SQL 代码从来都不是一个好主意,尽管最好使用参数而不是连接。

    总的来说,没有“最佳方法”。根据维护/更改、代码漏洞、性能、可靠性、显示复杂性等因素,您的解决方案应针对您的问题量身定制。

    我个人不喜欢数据源控件,但是当您不想花费大量时间配置网格时,它们对网格工作很有用。

    SQLCommands 非常非常快速和优化,但是您必须编写维护大量代码才能使用它们,而且它可能有些脆弱。

    DataAdapters/DataReaders/DataTables/DataSets 比 SQLCommands 更容易编写维护,但它们在内存中可能很麻烦,并且经常无法正确处理。

    Linq/ENF 都使编写和维护变得容易,但有时它们会让您使用自己生成的 sql 而不是您自己的 sql 来调试问题,并且通常执行速度较慢(通常幅度不大)。

    希望这有助于回答您的问题。

    【讨论】:

    • 您提到 - 从风格上讲,在您的 UI 中硬编码 SQL 代码从来都不是一个好主意,尽管使用参数而不是连接是好的。 -- 我写的是页面后面的代码。这样,可以吗。当您说 UI 时,您指的是 .aspx 页面还是 .aspx.cs 页面?
    • 我个人会根据您的数据库后端将其推送到存储过程中,或者推送到配置文件中,以便无需重新部署代码库即可对其进行调整。我曾经让一个实习生写过一个应用程序,它工作得很好,直到另一个开发人员弄乱了一个网格基于这样一个视图,它重复了值。我认为我应该能够将 DISTINCT 添加到他的存储过程中以修补它,直到修复视图,但由于他嵌入了他的 sql,我必须找到他的代码库,弄清楚它是如何工作的,重新编译和重新部署。数据库会随着时间发生很大变化。
    • @Fred Thomas- 谢谢-您对在 .aspx 文件本身中包含 SQL 有何看法。您是否也认为这不是一个好习惯?将它放在 .cs 文件中会更好吗? (我知道最好是把它放在一个存储过程中,但想让你输入其他类型)
    • 我的建议是 1) 避免将任何已编译的文件放入它们;2) 如果可能,将文件存储在后端服务器上,这样如果有人利用您的服务器层上的漏洞,就无法轻松检索它。如果您必须将它们放在应用程序层,则将它们放在一个 .cs 文件中,该文件是 dll 项目的一部分。这样,如果它们发生更改,您可以更改 dll 项目代码,然后放入 dll 的新副本。这些年来我做了很多。当然,我更喜欢使用存储过程,但不管你的船是什么。
    【解决方案2】:

    我认为您最好尝试改进您的代码以使用 linq 和其他类型的编程(如实体框架工作等),因为它们使您的项目更快、更可靠。它会导致编码减少。

    【讨论】:

    猜你喜欢
    • 2011-02-08
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 2011-03-18
    • 2018-09-28
    • 1970-01-01
    相关资源
    最近更新 更多