実行されるSQL選択スクリプトがあり、実行時にデータが選択されていることが示されます。私が抱えている問題は、そのデータをカレンダー コントロールに表示しようとしていることです。ユーザーがログインした部門によってカレンダーを変更したかったのです。現在、部門をハードコーディングしない限り、何も表示されず、データは表示されません。
私は c# asp.net を使用しています。
これが私がデータを取得しようとしていることです
private DataSet GetData()
{
var CurrUser = "a73 ";
var UsrDepartment = "60 ";
Account.Login uusr = new Account.Login();
CurrUser = uusr.User.Identity.Name.ToString().ToUpper();
ConnectionStringSettingsCollection cssc = ConfigurationManager.ConnectionStrings;
var sql = "select (substring(status, 1,1)) AS stat1, lastname, firstname, ldate, edate,depdivid, requestid from TIME.employee E inner join TIME.request T on E.EMPID = T.empid where E.depdivid = @UsrDepartment ";
using (iDB2Connection conn = new iDB2Connection(GetConnectionString()))
{
conn.Open();
using (iDB2Command cmd = new iDB2Command(sql, conn))
{
cmd.DeriveParameters();
using (iDB2DataAdapter da = new iDB2DataAdapter(cmd))
{
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
}
}
}
私はこれでカレンダーを埋めます:
DataSet ds = GetData();
foreach (DataRow row in ds.Tables[0].Rows)
{
//need to fill from first to last date
string scheduledDate = Convert.ToDateTime(row["ldate"]).ToShortDateString();
string endDate = Convert.ToDateTime(row["edate"]).ToShortDateString();
e.Cell.Width = 120;
e.Cell.Height = 100;
Int32 start = 0;
Int32 end = 0;
start = string.CompareOrdinal(scheduledDate, s);
end = string.CompareOrdinal(endDate, s);
if ((start <= 0) & (end >= 0) & (!e.Day.IsWeekend))
{
HyperLink lb = new HyperLink();
lb.Text = link + (Int64)row["requestid"] + "' >" + row["lastname"] + "</a>" as String + "(" + row["stat1"] + ")" as String + "<br />";
//code to change color of button
if (scheduledDate == endDate)
{
lb.CssClass = "changecolor";
}
e.Cell.Controls.Add(lb);
}
}
この方法ではカレンダーにリンクが表示されませんが、部門に値を持たせると(これは私が望んでいたものではありません)、リンクが表示されます。