ADO.net如何使用c#将特定数据库表单元格中的数据绑定到页面加载时的重复器控件;连接的模型
本文关键字:加载 模型 连接 控件 数据绑定 何使用 数据库 ADO 单元格 表单 net | 更新日期: 2023-09-27 18:17:41
我想将数据从oracle数据库单元格绑定到一个重复器控件内的一堆标签,使用c#, ADO。. NET和连接的模型。显示页面重复器是这样的(为了简单起见,这只是一个eval):
<asp:Repeater ID="rptMain" runat="server" >
<ItemTemplate>
<h3 id="contactUs"> <%#Eval("ppCustSurvey")%> %></h3>
</ItemTemplate>
</asp:Repeater>
现在属性字符串"ppCustSurvey"是一个属性,在我的属性类称为ppContent。在页面后面的代码中,我将其作为页面加载
的一部分if (!Page.IsPostBack)
{
clsContent objCon = new clsContent();
rptMain.DataSource = objCon.getContent();
rptMain.DataBind();
}
getContent()方法指向这个
public class clsContent
{
static readonly string _strConn;
static clsContent()
{
_strConn = WebConfigurationManager.ConnectionStrings["MyDilbert_Nov30"].ConnectionString;
}
public List<ppContent> getContent()
{
List<ppContent> objAllContent = new List<ppContent>();
OracleConnection conn = new OracleConnection(_strConn);
try
{
conn.Open();
string strCmd = "Select site_content from content";
OracleCommand cmd = new OracleCommand(strCmd, conn);
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
ppContent objCon = new ppContent();
objCon.ppCustSurvey = (dr["site_content"].ToString());
}
return objAllContent;
}
catch(Exception)
{
objAllContent.Clear();
return objAllContent;
}
finally{
conn.Close();
}
}
}
现在我认为我需要传递列的id参数,以便识别ppCustSurvey属于PK为1的列。我该怎么做呢?
我将把我的解决方案贴出来给任何觉得有用的人。我通过将以下代码添加到我的类中来解决这个问题:
public List<ppControls> getControls(int _id)
{
List<ppControls> objAllControls = new List<ppControls>();
OracleConnection conn = new OracleConnection(_strConn);
OracleCommand cmd = new OracleCommand("SELECT * FROM controls WHERE reference =: parID", conn);
cmd.Parameters.AddWithValue(":parID", _id);
try
{
conn.Open();
//string strCmd = parSelect;
//OracleCommand cmd = new OracleCommand(strCmd, conn);
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{ objCon.ppCustSurvey = dr["controls_content"].ToString();}
return objAllControls;
}
然后在后面的代码中,我像这样传递外键的参数
rptMain.DataSource = objCon.getControls(7);
rptMain.DataBind();
为每个中继器执行此操作。我为ppCustSurvey创建了一个带有get和set的属性类,并将属性名分配给显示页面上中继器的Eval函数。总之,这就是我解它的方法。现在我很好奇您会用什么方法来减少对服务器的冲击,但这是另一个问题的主题。
如果您打算从数据库中收集大量数据到像这样的一系列标签中,我怀疑您的dba可能会质疑数据库上的重复敲打(即每次呈现页面时打开连接并为每个标签执行select语句),特别是如果这是一个高流量的站点。
在这种情况下,我们通常一次性从数据库中获取所有必要的数据,并在代码隐藏中动态生成所需的HTML。这可能需要更多的前期工作,但它应该快得多,对数据库的影响也小得多。如果您想坚持当前的设计,我们需要查看如何在客户端定义列的PK,但它可以像向ppCustSurvey方法添加一个参数一样简单。