Kombinerad kolumn i dataset och spara i cacheminne

Har en rutin som hämtar ut olika märken för en e-handelsida. Dessa visas i en DropDownList och fylldes den av en SqlDataReader.

Nu ville jag spara dessa data i ett DataSet och lagra det i Cache-minnet för att spara på dyrbara återtrippar till databasen (SQL Server).

Efter märkena i listan skulle det stå hur många produkter som finns under varje märke, inom paranteser. Därför behövde jag göra en ny kolumn och sätta ihop två värden och lägga till egna tecken.

Inlägget "SubString in an ADO.NET DataSet - (DataColumn Expression)" på CodeBetter.com visar hur man gör en nya kolumn med en SubString och som lägger till tre prickar efteråt.

ds.Tables["Customers"].Columns.Add("ShortCompanyName", typeof(string),"Substring(CompanyName, 1, 10) + '...'");

Med hjälp av började jag förstå hur syntaxen för hur DataColumn.Expression fungerar.

Här är själva kodsnutten som kombinerar två värden och skriver det sista inom paranteser.

dataSet.Tables["ChooseBrand"].Columns.Add("BrandWithCount", typeof(string), "Brand + ' (' + CountOfProducts + ')'");

Här är större del av koden som även visar hur man lägger in ett DataSet i Cache.

private void BindBrand()
{

ddlBrand.Items.Clear();

DataSet ds = LoadBrand();

ddlBrand.DataSource = ds;
ddlBrand.DataSource = ds.Tables[0];
ddlBrand.DataTextField = ds.Tables[0].Columns["BrandWithCount"].ColumnName.ToString();

ddlBrand.DataValueField = ds.Tables[0].Columns["Id"].ColumnName.ToString();
ddlBrand.DataBind();

ListItem titleItem = new ListItem((string)this.GetLocalResourceObject("ChooseBrand"), "0");
ddlBrand.Items.Insert(0,titleItem);

}

protected DataSet LoadBrand()
{
Trace.Write("LoadBrand()");
DataSet dataSet = new DataSet();

string strCacheName = "ChooseBrand";
//Cache.Remove(strCacheName);

//Hämta cachad data om det finns
if (Cache[strCacheName] != null)
{
dataSet = (DataSet)(Cache[strCacheName]);
Trace.Write("//Hämta cachad ChooseBrand");
}
else
{

SqlConnection conn = new SqlConnection(strConn);

string strSQL = "SELECT DISTINCT Brand.Id, Brand.Brand,(SELECT Count(Product.Id) AS CountOfProductId FROM Product WHERE Product.BrandId=Brand.Id) AS CountOfProducts FROM Brand ORDER BY Brand.Brand";

try
{
SqlDataAdapter dataAdapter = new SqlDataAdapter(strSQL, conn);
dataAdapter.Fill(dataSet, "ChooseBrand");
dataAdapter.Dispose();
dataAdapter = null;


//Lägg till custom kolumn
dataSet.Tables["ChooseBrand"].Columns.Add("BrandWithCount", typeof(string), "Brand + ' (' + CountOfProducts + ')'");

Cache.Insert(strCacheName, dataSet, null, DateTime.Now.AddMinutes(21), TimeSpan.Zero);
Trace.Write("//Lägg in ChooseBrand i cachen");
}
catch (Exception objException)
{
Trace.Warn("LoadChooseBrand() Fel!", objException.Message);
}
finally
{
if (conn != null)
{
conn.Close();
conn = null;
}
}
}
return dataSet;
}

Comments

Nu ville jag spara dessa data i ett DataSet och lagra det i Cache-minnet för att spara på dyrbara återtrippar till databasen (SQL Server). Bra Fittings near Long Beach

There are many devices 1z0-851 braindump questions that can be quite useful in many situations, but historically have been too bulky to haul around on a daily basis. Such devices include things 642-999 braindumps free download like cameras, video recorders, voice recorders, radios, and many more. Today, one small and light device can perform not only all of the functions that were just mentioned Microsoft 70-687 dumps

Please fill out all the fields.

*
*