![](/img/trans.png)
[英]select spacific sheet in import data from Excel to database ADO.net using C#
[英]ADO.net how to bind data from specific database table cell to a repeater control on page load using C# & the connected model?
我想使用C#,ADO.NET和連接的模型將oracle數據庫單元中的數據綁定到轉發器控件中的一堆標簽。 顯示頁面中繼器是這樣的(為簡單起見,這只是一個評估):
<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();
這是針對每個中繼器完成的。 我創建了一個帶有get和set的ppCustSurvey屬性類,並在顯示頁面上將屬性名稱分配給了轉發器的Eval函數。 無論如何,這就是我解決的方法。 現在,我很好奇您將以何種方式減輕服務器上的負擔,但這是另一個問題。
如果您打算從數據庫中將大量數據收集到一系列這樣的標簽中,那么我懷疑您的DBA可能會對重復敲打數據庫提出質疑(即每次打開連接並為每個標簽執行select語句)頁面呈現),尤其是在這是一個人流量大的網站時。
在這種情況下,我們通常會一口氣從數據庫中獲取所有必要的數據,並在后台代碼中動態生成所需的HTML。 這可能需要更多的工作,但是它應該更快,並且對數據庫的影響也要小得多。
如果您要堅持當前的設計,我們將需要查看如何在客戶端定義列的PK,但這就像在ppCustSurvey方法中添加參數一樣簡單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.