如何简化下面的过程代码,总觉得有些冗余,请高手指教!!!就剩最后的20分了,只有全送了.

ToSchool 2003-08-19 11:32:21
是这样的,如果没有提交则显示全部的表中内容,之后,每点击按钮,就将下拉列表框中的值传为参数,根据参数来显示表中的内容,总感觉下面的判断是不是有些冗余了,不知是否能简化一下呢?
Sub BindGrid()
' Dim getid As Integer = 10787
Dim myConnection As SqlConnection = cn
Dim ds As DataSet = New DataSet()
' Dim adapter As SqlDataAdapter = New SqlDataAdapter("Select * from Orders where OrderId>" & getid, myConnection)
Dim tmp As String

If Not IsPostBack() Then
Dim adapterss As SqlDataAdapter = New SqlDataAdapter("Select * from Orders", myConnection)
adapterss.Fill(ds, "Orders")
MyDataGrid.DataSource = ds.Tables("Orders").DefaultView
MyDataGrid.DataBind()

Else
Dim adapterss As SqlDataAdapter = New SqlDataAdapter("Select * from Orders where OrderId>@getid", myConnection)
adapterss.SelectCommand.Parameters.Add(New SqlParameter("@getID", SqlDbType.VarChar, 30))
adapterss.SelectCommand.Parameters("@getID").Value = ddlist.SelectedItem.Value
adapterss.Fill(ds, "Orders")
MyDataGrid.DataSource = ds.Tables("Orders").DefaultView
MyDataGrid.DataBind()
End If

End Sub
...全文
49 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wtadminxjeri 2003-08-19
  • 打赏
  • 举报
回复
同意
写成数据操作类
ToSchool 2003-08-19
  • 打赏
  • 举报
回复
高手呀,高手,不会嫌分少吧,帮帮忙吧!
最好用vb来做了,谢谢,就照顾一下新手吧。
seesea125 2003-08-19
  • 打赏
  • 举报
回复
把数据库的操作放一个类里,可以重复调用,我就这么做的
ToSchool 2003-08-19
  • 打赏
  • 举报
回复
各位不要嫌分少,分全都问完了,我现在是身无分文了,只有再一天一天的积攒了。
ToSchool 2003-08-19
  • 打赏
  • 举报
回复
谢谢。
xdangdang 2003-08-19
  • 打赏
  • 举报
回复
是的
用DataView.rowFilter
如果不是postBack
那么就用的是DefaultView
如果是PostBack
那么就会用Rowfilter 取满足条件的一部分
或者干脆改成
if ispostback then
dvorders.rowfilter="OrderId>" & ddlist.selecteditem.value
End if

ToSchool 2003-08-19
  • 打赏
  • 举报
回复
to:seesea125(雨天)
你的代码回去后我一定好好研究研究,谢谢指点,好东东呀。

to:xdangdang(当当)

If Not IsPostBack() Then

Else
dvorders.rowfilter="OrderId>" & ddlist.selecteditem.value
End If
在then后没有代码了?空了就行吗?
DoHope 2003-08-19
  • 打赏
  • 举报
回复
学习,学习了。
DoHope 2003-08-19
  • 打赏
  • 举报
回复
学习,学习了。
xdangdang 2003-08-19
  • 打赏
  • 举报
回复
Sub BindGrid()
' Dim getid As Integer = 10787
Dim myConnection As SqlConnection = cn
Dim ds As DataSet = New DataSet()
Dim adapter As SqlDataAdapter = New SqlDataAdapter("Select * from Orders ", myConnection)
Dim tmp As String
dim dvOrders as new dataview()
adapter.Fill(ds, "Orders")
dvorders=ds.tables("Orders").defaultview
If Not IsPostBack() Then
Else
dvorders.rowfilter="OrderId>" & ddlist.selecteditem.value
End If
myDatagrid.datasource=dvorders
mydatagrid.databind()
End Sub
seesea125 2003-08-19
  • 打赏
  • 举报
回复
(将这个编译成dll,然后在VS环境下项目的引用中将这个dll添加进去就是了)
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
namespace Conn
{
public class ConnClass
{
private string myConnString="server=***;uid=sa;pwd=***;database=***";
public string SetConnStr
{
set
{
if(value!=myConnString)
{
myConnString=value;
}
}
}
public DataSet GetDs(string cmd,string dtn)
{
SqlConnection myConnection = new SqlConnection(myConnString);
SqlDataAdapter myCommand = new SqlDataAdapter(cmd, myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds,dtn);
return ds;
}
public SqlDataAdapter GetDa(string cmd)
{
SqlConnection myConnection = new SqlConnection(myConnString);
SqlDataAdapter da = new SqlDataAdapter(cmd, myConnection);
return da;
}
public int GetCountByTable(string table)
{
int countnum=0;
SqlConnection myConnection = new SqlConnection(myConnString);
SqlCommand myCountCommand=new SqlCommand("select count(*) from "+table,myConnection);
myCountCommand.Connection.Open();
countnum=(int) myCountCommand.ExecuteScalar();
myCountCommand.Connection.Close();
return countnum;
}
public int GetCountByCmd(string cmd)
{
int countnum=0;
SqlConnection myConnection = new SqlConnection(myConnString);
SqlCommand myCountCommand=new SqlCommand(cmd,myConnection);
myCountCommand.Connection.Open();
countnum=(int) myCountCommand.ExecuteScalar();
myCountCommand.Connection.Close();
return countnum;
}
public string GetString(string cmd)
{
string str=null;
SqlConnection myConnection = new SqlConnection(myConnString);
SqlCommand myCountCommand=new SqlCommand(cmd,myConnection);
myCountCommand.Connection.Open();
str=myCountCommand.ExecuteScalar().ToString();
myCountCommand.Connection.Close();
return str;
}
public void NonQuery(string cmd)
{
SqlConnection myConnection = new SqlConnection(myConnString);
SqlCommand cmd1=new SqlCommand(cmd,myConnection);
cmd1.Connection.Open();
cmd1.ExecuteNonQuery();
cmd1.Connection.Close();
}
public ArrayList GetArrayList(string cmd)
{
ArrayList values = new ArrayList();
string mySelectQuery = cmd;
SqlConnection myConnection = new SqlConnection(myConnString);
SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection);
myConnection.Open();
SqlDataReader myReader;
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
values.Add(myReader.GetValue(0).ToString());
}
myReader.Close();
myConnection.Close();
return values;
}
public ArrayList GetArrayListByRow(string cmd)
{
ArrayList values = new ArrayList();
SqlConnection myConnection = new SqlConnection(myConnString);
SqlDataAdapter myCommand = new SqlDataAdapter(cmd, myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds,"table");
DataTable dt=ds.Tables[0];
for(int i=0;i<dt.Columns.Count;i++)
{
values.Add(dt.Rows[0][i].ToString());
}
myConnection.Close();
return values;
}
}
}
ToSchool 2003-08-19
  • 打赏
  • 举报
回复
似乎明白了一点,不容易呀,唉!!!
wtadminxjeri 2003-08-19
  • 打赏
  • 举报
回复
譬如
好多控件需要一个datasource
你可以在类里面专门写一个返回DataSet的一个函数
以此类举..............
....................
ToSchool 2003-08-19
  • 打赏
  • 举报
回复
各位大虾都哪里了?
ppp80 2003-08-19
  • 打赏
  • 举报
回复
我也是这莫做的,就不用总写了
ToSchool 2003-08-19
  • 打赏
  • 举报
回复
各位竟是理论呀,来点实际好不好呀???
gxboy 2003-08-19
  • 打赏
  • 举报
回复
asp.net最好用三层结构,数据操作同意放在dll里,至少可减去40%代码。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧