新開一個DT 去放值
DataTable dtLeave = readLeave(sBeginDateTime, sEndDateTime, sMedNo, sChinName, sLeaveReason, this.Page, AParams);
DataTable dtOutPut = new DataTable();//重整dt
dtOutPut.Columns.Add(new DataColumn("MedNo", typeof(string)));
dtOutPut.Columns.Add(new DataColumn("ChinName", typeof(string)));
dtOutPut.Columns.Add(new DataColumn("LeaveDateTime", typeof(string)));
dtOutPut.Columns.Add(new DataColumn("LeaveReason", typeof(string)));
dtOutPut.Columns.Add(new DataColumn("CreateName", typeof(string)));
dtOutPut.Columns.Add(new DataColumn("CreateDateTime", typeof(string)));
dtOutPut.Columns.Add(new DataColumn("HospNo", typeof(string)));
dtOutPut.Columns.Add(new DataColumn("CaseSeq", typeof(string)));
dtOutPut.Columns.Add(new DataColumn("LeaveSeq", typeof(string)));
for (int i = 0; i < dtLeave.Rows.Count; i++)
{
DataRow row = dtOutPut.NewRow();
row["MedNo"] = dtLeave.Rows[i]["MedNo"].ToString();
row["ChinName"] = dtLeave.Rows[i]["ChinName"].ToString();
row["LeaveDateTime"] = HISDateTime.ReportDateTime(HISDateTime.DateTimeString(dtLeave.Rows[i]["BeginDateTime"].ToString())) + "~" + HISDateTime.ReportDateTime(HISDateTime.DateTimeString(dtLeave.Rows[i]["EndDateTime"].ToString()));//更改日期格式
row["LeaveReason"] = dtLeave.Rows[i]["LeaveReason"].ToString();
row["CreateName"] = dtLeave.Rows[i]["CreateName"].ToString();
row["CreateDateTime"] = HISDateTime.ReportDateTime(HISDateTime.DateTimeString(dtLeave.Rows[i]["CreateDateTime"].ToString()));//紀錄時間
row["HospNo"] = dtLeave.Rows[i]["HospNo"].ToString();
row["CaseSeq"] = dtLeave.Rows[i]["CaseSeq"].ToString();
row["LeaveSeq"] = dtLeave.Rows[i]["LeaveSeq"].ToString();
dtOutPut.Rows.Add(row);
}
拿舊的增加
DataTable dtLeave = readLeave(sBeginDateTime, sEndDateTime, sMedNo, sChinName, sLeaveReason, this.Page, AParams);
dtLeave.Columns.Add(new DataColumn("LeaveDateTime", typeof(string)));
for (int i = 0; i < dtLeave.Rows.Count; i++)
{
DataRow row = dtLeave.NewRow();
dtLeave.Rows[i]["LeaveDateTime"] = HISDateTime.ReportDateTime(HISDateTime.DateTimeString(dtLeave.Rows[i]["BeginDateTime"].ToString())) + "~" + HISDateTime.ReportDateTime(HISDateTime.DateTimeString(dtLeave.Rows[i]["EndDateTime"].ToString()));//更改日期格式
}
2015年5月20日 星期三
2015年5月19日 星期二
UpdatePanel 控制pancel 範例
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> //必加
<asp:DropDownList ID="ddlType" runat="server" OnSelectedIndexChanged="ddlType_SelectedIndexChanged" AutoPostBack="True">
<asp:ListItem Value="1">test01</asp:ListItem>
<asp:ListItem Value="2">test02</asp:ListItem>
<asp:ListItem Value="3">test03</asp:ListItem>
</asp:DropDownList>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlType" EventName="SelectedIndexChanged" /> //這裡的設定要去 On
</Triggers>
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server" Visible="False">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</asp:Panel>
<asp:Panel ID="Panel2" runat="server" Visible="False">
<asp:Label ID="Label2" runat="server" Text="Labe2"></asp:Label>
</asp:Panel>
<asp:Panel ID="Panel3" runat="server" Visible="False">
<asp:Label ID="Label3" runat="server" Text="Labe3"></asp:Label>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
.cs :
protected void ddlType_SelectedIndexChanged(object sender, EventArgs e)
{
switch (ddlType.SelectedValue)
{
case "1":
Panel1.Visible = true;
Panel2.Visible = false;
Panel3.Visible = false;
break;
case "2":
Panel1.Visible = false;
Panel2.Visible = true;
Panel3.Visible = false;
break;
case "3":
Panel1.Visible = false;
Panel2.Visible = false;
Panel3.Visible = true;
break;
default:
break;
}
}
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> //必加
<asp:DropDownList ID="ddlType" runat="server" OnSelectedIndexChanged="ddlType_SelectedIndexChanged" AutoPostBack="True">
<asp:ListItem Value="1">test01</asp:ListItem>
<asp:ListItem Value="2">test02</asp:ListItem>
<asp:ListItem Value="3">test03</asp:ListItem>
</asp:DropDownList>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddlType" EventName="SelectedIndexChanged" /> //這裡的設定要去 On
</Triggers>
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server" Visible="False">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</asp:Panel>
<asp:Panel ID="Panel2" runat="server" Visible="False">
<asp:Label ID="Label2" runat="server" Text="Labe2"></asp:Label>
</asp:Panel>
<asp:Panel ID="Panel3" runat="server" Visible="False">
<asp:Label ID="Label3" runat="server" Text="Labe3"></asp:Label>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
.cs :
protected void ddlType_SelectedIndexChanged(object sender, EventArgs e)
{
switch (ddlType.SelectedValue)
{
case "1":
Panel1.Visible = true;
Panel2.Visible = false;
Panel3.Visible = false;
break;
case "2":
Panel1.Visible = false;
Panel2.Visible = true;
Panel3.Visible = false;
break;
case "3":
Panel1.Visible = false;
Panel2.Visible = false;
Panel3.Visible = true;
break;
default:
break;
}
}
AJAX Control Toolkit - CascadingDropDown
前言 基本上AJAX Control Toolkit是根據ASP.NET的原件為基礎 開發的外掛物件 核心以TargetControlID作為連結
下面介紹的是CascadingDropDown這元件
.aspx :
<asp:DropDownList ID="ddlType" runat="server">
</asp:DropDownList> //
//主要介紹是下面這個 CascadingDropDown 如果沒這元件 可以去下載
AJAX Control Toolkit : http://ajaxcontroltoolkit.codeplex.com/
<cc1:CascadingDropDown ID="CascadingDropDown1" runat="server"
Category="SystemID" Enabled="True" LoadingText="讀取中..."
PromptText="請選擇系統類別" ServicePath="UCWebService1.asmx" //需要連結
ServiceMethod="GetSysTemType" //函式名稱 UseContextKey="True"
TargetControlID="ddlType" //連到上面的ddl />
接下來加入新項目
Web服務 附檔名是 .asmx 即是上面要連結的頁面
public CascadingDropDownNameValue[] GetSysTemType(string knownCategoryValues, string category)
{
List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
values.Add(new CascadingDropDownNameValue("test01", "1"));
values.Add(new CascadingDropDownNameValue("test02", "2"));
values.Add(new CascadingDropDownNameValue("test03", "3"));
return values.ToArray();
}
很重要的地方 上面有一行自行產生的
// 若要允許使用 ASP.NET AJAX 從指令碼呼叫此 Web 服務,請取消註解下列一行。
// [System.Web.Script.Services.ScriptService]
是的 要把註解拿掉 否則部會成功的
下面介紹的是CascadingDropDown這元件
.aspx :
<asp:DropDownList ID="ddlType" runat="server">
</asp:DropDownList> //
//主要介紹是下面這個 CascadingDropDown 如果沒這元件 可以去下載
AJAX Control Toolkit : http://ajaxcontroltoolkit.codeplex.com/
<cc1:CascadingDropDown ID="CascadingDropDown1" runat="server"
Category="SystemID" Enabled="True" LoadingText="讀取中..."
PromptText="請選擇系統類別" ServicePath="UCWebService1.asmx" //需要連結
ServiceMethod="GetSysTemType" //函式名稱 UseContextKey="True"
TargetControlID="ddlType" //連到上面的ddl />
接下來加入新項目
Web服務 附檔名是 .asmx 即是上面要連結的頁面
public CascadingDropDownNameValue[] GetSysTemType(string knownCategoryValues, string category)
{
List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
values.Add(new CascadingDropDownNameValue("test01", "1"));
values.Add(new CascadingDropDownNameValue("test02", "2"));
values.Add(new CascadingDropDownNameValue("test03", "3"));
return values.ToArray();
}
很重要的地方 上面有一行自行產生的
// 若要允許使用 ASP.NET AJAX 從指令碼呼叫此 Web 服務,請取消註解下列一行。
// [System.Web.Script.Services.ScriptService]
是的 要把註解拿掉 否則部會成功的
2015年5月17日 星期日
日期運算
//字串轉日期
DateTime startDate = DateTime.ParseExact( "20150518" , "yyyyMMdd", null);
//DateTime轉"數字" toString 的 d 去掉 就變成 英文
string sTomorrowCircleValueW = dtTomorrowDate.DayOfWeek.ToString("d");//1 2 3 4 5 6 0(日)
//日期是該年第幾周
public int GetWeekOfYear(DateTime dt)
{
GregorianCalendar gc = new GregorianCalendar();
return gc.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
}
//兩日期之間共有幾周
public int week(DateTime start, DateTime end)
{
if (start > end) return -week(end, start);
else
{
int count = 0;
DateTime p = start;
while (p < end)
{
if (p.DayOfWeek == DayOfWeek.Sunday) count++;
p = p.AddDays(1);
}
return count;
}
}
DateTime startDate = DateTime.ParseExact( "20150518" , "yyyyMMdd", null);
//DateTime轉"數字" toString 的 d 去掉 就變成 英文
string sTomorrowCircleValueW = dtTomorrowDate.DayOfWeek.ToString("d");//1 2 3 4 5 6 0(日)
//日期是該年第幾周
public int GetWeekOfYear(DateTime dt)
{
GregorianCalendar gc = new GregorianCalendar();
return gc.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
}
//兩日期之間共有幾周
public int week(DateTime start, DateTime end)
{
if (start > end) return -week(end, start);
else
{
int count = 0;
DateTime p = start;
while (p < end)
{
if (p.DayOfWeek == DayOfWeek.Sunday) count++;
p = p.AddDays(1);
}
return count;
}
}
2015年5月13日 星期三
開小視窗
母視窗開子視窗
window.open()
子視窗 呼叫 母視窗
opener.window.location.reload(); 重製母視窗
opener.window.function(); 呼叫母視窗 function
window.open()
子視窗 呼叫 母視窗
opener.window.location.reload(); 重製母視窗
opener.window.function(); 呼叫母視窗 function
ASP開發ID變動
ASP元件 在建置成HTML的時候 id 都會增加點東西
所以有時候scritp 抓不到東西倒也不是下錯指令
但<div> <td>之類的元件 id 卻不會改變
所以最簡單的解決方法就是 用一層div去包他
再用find去找
$('#divID').find("input").attr("value","test");
順帶一提 .click()
是找不到 onclick事件的 我是直接在ASP裡加上
click="btnSearch_Click" 跟 onclick相同事件 就可以解決了
但不知道這樣會有啥後遺症就是了
所以有時候scritp 抓不到東西倒也不是下錯指令
但<div> <td>之類的元件 id 卻不會改變
所以最簡單的解決方法就是 用一層div去包他
再用find去找
$('#divID').find("input").attr("value","test");
順帶一提 .click()
是找不到 onclick事件的 我是直接在ASP裡加上
click="btnSearch_Click" 跟 onclick相同事件 就可以解決了
但不知道這樣會有啥後遺症就是了
2015年5月12日 星期二
gv 抓值
1. 按鈕轉成 temTemplate
aspx:
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false" CommandName="cancel" Text="作廢" OnClientClick="return confirm('是否確定刪除?');"></asp:LinkButton>
</ItemTemplate>
cs:
protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "cancel")
{
//int index = Convert.ToInt32(e.CommandArgument);
LinkButton customersGridView = (LinkButton)e.CommandSource;
GridViewRow row = (GridViewRow)customersGridView.NamingContainer;
string sMedNo = Server.HtmlDecode(row.Cells[0].Text);
}
}
2.普通的
apsx:
<Columns>
<asp:ButtonField CommandName="cancel" Text="作廢" />
</Columns>
cs:
protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "cancel")
{
int index = Convert.ToInt32(e.CommandArgument);
GridView customersGridView = (GridView)e.CommandSource;
GridViewRow row = customersGridView.Rows[index];
string sHospNo = Server.HtmlDecode(row.Cells[0].Text);
}
}
-----------------------------------------------------------------------------------------------------
如果要抓 沒顯示在GV上的值
其中一種簡單的辦法就是 一樣把值帶入GV但隱藏起來
可是如果直接在裡面設定 則系統是不會產生code給你去抓的
所以與RowCreated時設定
protected void gv_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header || e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[9].Visible = false;//隱藏欄位 (數字要自己算 從0開始)
e.Row.Cells[10].Visible = false;
e.Row.Cells[11].Visible = false;
}
}
aspx:
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false" CommandName="cancel" Text="作廢" OnClientClick="return confirm('是否確定刪除?');"></asp:LinkButton>
</ItemTemplate>
cs:
protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "cancel")
{
//int index = Convert.ToInt32(e.CommandArgument);
LinkButton customersGridView = (LinkButton)e.CommandSource;
GridViewRow row = (GridViewRow)customersGridView.NamingContainer;
string sMedNo = Server.HtmlDecode(row.Cells[0].Text);
}
}
2.普通的
apsx:
<Columns>
<asp:ButtonField CommandName="cancel" Text="作廢" />
</Columns>
cs:
protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "cancel")
{
int index = Convert.ToInt32(e.CommandArgument);
GridView customersGridView = (GridView)e.CommandSource;
GridViewRow row = customersGridView.Rows[index];
string sHospNo = Server.HtmlDecode(row.Cells[0].Text);
}
}
-----------------------------------------------------------------------------------------------------
如果要抓 沒顯示在GV上的值
其中一種簡單的辦法就是 一樣把值帶入GV但隱藏起來
可是如果直接在裡面設定 則系統是不會產生code給你去抓的
所以與RowCreated時設定
protected void gv_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header || e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[9].Visible = false;//隱藏欄位 (數字要自己算 從0開始)
e.Row.Cells[10].Visible = false;
e.Row.Cells[11].Visible = false;
}
}
2015年5月11日 星期一
SQL語法 IF
SELECT
CASE DateType
WHEN '1' THEN STR(SpaceCircle) + '月'
WHEN '2' THEN STR(SpaceCircle) + '周'
ELSE STR(SpaceCircle)
END 'New SpaceCircle'
from Table
SQL的IF是靠CASE來做邏輯的
case 是判斷條件
when 條件結果 then 要做的句子
else 則看你加不加
end 後加新欄位名稱
順帶一提 STR( ) 是 SQL轉字串的語法
CASE DateType
WHEN '1' THEN STR(SpaceCircle) + '月'
WHEN '2' THEN STR(SpaceCircle) + '周'
ELSE STR(SpaceCircle)
END 'New SpaceCircle'
from Table
SQL的IF是靠CASE來做邏輯的
case 是判斷條件
when 條件結果 then 要做的句子
else 則看你加不加
end 後加新欄位名稱
順帶一提 STR( ) 是 SQL轉字串的語法
2015年5月10日 星期日
錯誤訊息:必須宣告純量變數
錯誤訊息:必須宣告純量變數
結果是因為sql語句分開寫 在加再一起 中間少一個空格 系統把她整句黏在一起了
語句後面加個 空白 幫他們分開一下就解決了...
這只是其中一個可能性 貌似是新手常遇到的問題 紀錄一下吧
結果是因為sql語句分開寫 在加再一起 中間少一個空格 系統把她整句黏在一起了
語句後面加個 空白 幫他們分開一下就解決了...
這只是其中一個可能性 貌似是新手常遇到的問題 紀錄一下吧
訂閱:
意見 (Atom)