星期日, 1月 25, 2009

dropdownlist篩選gridview初始頁面為空值的問題

今天在小舖看到一個問題..設計者設計一個介面讓用戶用dropdowlist來篩選gridview要顯示出來的item..但是要在一開始開啟網頁的時候..先顯示出全部的資料..之後再篩選想要的資料..這個問題的處理想法就是在where的sql statement那用case when來處理一下就可以完成了..我寫個simple code..參考一下ㄅ..

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT [ProductID], [ProductName] FROM [Alphabetical list of products]">
</asp:SqlDataSource>
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"
DataSourceID="SqlDataSource1"
DataTextField="ProductName" DataValueField="ProductID" AutoPostBack="True">
<asp:ListItem Value="0">請選擇</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="
SELECT [ProductID], [ProductName], [SupplierID]
FROM [Alphabetical list of products]
WHERE ([ProductID] = case when @ProductID = 0 then ProductID else @ProductID end)"
>
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="ProductID"
PropertyName="SelectedValue"
Type="Int32" ConvertEmptyStringToNull="false" />
</SelectParameters>
</asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="ProductID"
DataSourceID="SqlDataSource2">
<Columns>
<asp:BoundField DataField="ProductID" HeaderText="ProductID"
ReadOnly="True" SortExpression="ProductID" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName"
SortExpression="ProductName" />
<asp:BoundField DataField="SupplierID" HeaderText="SupplierID"
SortExpression="SupplierID" />
</Columns>
</asp:GridView>

試試看ㄅ..Big GrinBig GrinBig GrinBig GrinBig Grin..

星期日, 1月 18, 2009

is 跟 as 運算子

is跟as這兩個運算子..不知各位常用到ㄇ..先簡單看一下msdn的介紹..

is (C# 參考)
檢查物件是否與指定的型別相容
http://msdn.microsoft.com/zh-tw/library/scekt9xw.aspx

as (C# 參考)
as 運算子可用來執行相容參考型別之間的特定類型轉換。
http://msdn.microsoft.com/zh-tw/library/cscsdfbt.aspx

個人之前的用法是:

if(oo is Ixxx)
{
Ixxx xxx = oo as Ixxx;
xxx.ToDo();
}

Ixxx是型別或是介面..o是任何型別的物件..我都常都是這樣來做轉型的..不過最近問高手跟查了一下msdn..發現..下面作法比較有效率..

Ixxx xxx = oo as Ixxx;
if(xxx != null)
{
xxx.ToDo();
}

..Big Grin....Big Grin....Big Grin....Big Grin....Big Grin....Big Grin....Big Grin....Big Grin..

參考:
http://msdn.microsoft.com/zh-tw/library/cc488006.aspx

星期二, 1月 13, 2009

用Gridview來群組小計

今天在小舖看到一個有趣的問題..就是如何用gridview來群組小計..就像下圖一樣..

bbh

我的作法是在GridView_RowDataBound裡處理..看codeㄅ..

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//兩個為一組加總
if (e.Row.RowIndex > 0 && e.Row.RowIndex % 2 == 1)
{
GridViewRow gvr = new GridViewRow(-1, -1, DataControlRowType.DataRow,
DataControlRowState.Normal);
TableCell tc = new TableCell();

double sum = Convert.ToDouble(GridView1.Rows[e.Row.RowIndex - 1].Cells[1].Text)
+ Convert.ToDouble(e.Row.Cells[1].Text);
tc.Text = sum.ToString();
tc.HorizontalAlign = HorizontalAlign.Right;
tc.ColumnSpan = 2;
gvr.Cells.Add(tc);
e.Row.Parent.Controls.Add(gvr);
}
}
}

參考:

星期三, 1月 07, 2009

(jquery)Set Homepage Link plugin

今天在試寫一個jquery的plugin..這plugin的內容是如何設定網頁為首頁..貼出程式碼..大家研究一下..^^||..

/**
* Set Homepage Link plugin
*
* Copyright (c) 2009 Bibby Chung
* Blog: http://bibby.be
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* just for ie and firefox
*
* @example
* $('#Button1').click(function() {
* $.setHomepage('http://google.com');
* });
*/

jQuery.extend({
setHomepage: function(url) {
if (document.all) {
document.body.style.behavior = 'url(#default#homepage)';
document.body.setHomePage(url);
}
else if (window.sidebar) {
if (window.netscape) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
catch (e) {
var strTemp = '';
strTemp += "this action was aviod by your browser,";
strTemp += "if you want to enable,please enter about:config in your address line,";
strTemp += "and change the value of signed.applets.codebase_principal_support to true";
alert(strTemp);
}
}
var prefs = Components.classes['@mozilla.org/preferences-service;1']
.getService(Components.interfaces.nsIPrefBranch);
prefs.setCharPref('browser.startup.homepage', url);
}
}
});

使用方法..
$('#btn').click(function() {
$.setHomepage('http://tw.yahoo.com');
});

目前測試可用的環境是ie,firefox..沒有灌太多東西可以測..^^||..有問題再說說ㄅ..Puppy dog eyes..

參考:
http://www.dlcom.org/article/Javascript/200808/04-23882.html
http://jquery.com/

星期一, 1月 05, 2009

ajax client端的事件檢視表

最近在玩ajax..順手寫了一個ajax的事件檢視表..讓以後在偵錯..或是寫ajax上可以很清楚很方便的知道哪個事件做了哪些事..還有可能會發生哪些問題..發布在這裡..有需要的拿去使用ㄅ..

.aspx

<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Panel ID="UpdatePanel" runat="server" GroupingText="UpdatePannel">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Literal ID="litTime" runat="server"></asp:Literal>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
<br />
<!--這裡是顯示ajax事件的table-->
<table width="600" border="1">
<tr><th style="width: 200px">Event</th><th>Details</th></tr>
<tbody id="content"></tbody>
<tfoot>
<tr><td colspan="2"><input id="clearTd" type="button" value="清除rows" /></td></tr>
</tfoot>
</table>
</form>
</body>

.js

<script type="text/javascript">
$(document).ready(
function() {
//client framework事件
Sys.Application.add_init(OnInit);
Sys.Application.add_load(OnLoad);

//update panel asynchronous postback 事件
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(OnInitializeRequest);
prm.add_beginRequest(OnBeginReqest);
prm.add_pageLoading(OnPageLoading);
prm.add_pageLoaded(OnPageLoaded);
prm.add_endRequest(OnEndRequest);

//清除rows
$('#clearTd').click(function() {
$('#content').html('');
});
}
);

function OnInit(sender, args) {
AddRow('OnInit', '');
}
function OnLoad(sender, args) {
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (!prm.get_isInAsyncPostBack()) {
AddRow('OnLoad', '這是平常的postback');
} else {
AddRow('OnLoad', '這是asynchronous postback');
}
}
function OnInitializeRequest(sender, args) {
//Sys.WebForms.InitializeRequestEventArgs
AddRow('OnInitializeRequest', '引發的控制項ID為' + args.get_postBackElement().id);
}
function OnBeginReqest(sender, args) {
AddRow('OnBeginReqest', '');
}
function OnPageLoading(sender, args) {
//new Sys.WebForms.PageLoadingEventArgs().get_panelsUpdating()
//new Sys.WebForms.PageLoadingEventArgs().get_panelsDeleting()
var detail = displayPanels('Updating', args.get_panelsUpdating()) +
' , ' + displayPanels('Deleting', args.get_panelsDeleting());
AddRow('OnPageLoading', detail);
}
function OnPageLoaded(sender, args) {
//new Sys.WebForms.PageLoadedEventArgs().get_panelsCreated();
//new Sys.WebForms.PageLoadedEventArgs().get_panelsUpdated();
var detail = displayPanels('Created', args.get_panelsCreated()) +
' , ' + displayPanels('Updated', args.get_panelsUpdated());
AddRow('OnPageLoaded', detail);
}
function OnEndRequest(sender, args) {
//new Sys.WebForms.EndRequestEventArgs().get_error().message
var details = '';
if (args.get_error() != null) {
details += args.get_error().message;
} else {
details += '沒有錯誤';
}
AddRow('OnEndRequest', details);
}

//增加row
function AddRow(eventName, details) {
$('#content').append('<tr><td>' + eventName + '</td><td>' + details + '</td></td>');
}
//顯示細節
function displayPanels(action, panels) {
var sb = new Sys.StringBuilder();
sb.append(action + ' ' + panels.length + ' panel');
if (panels.length > 0) {
sb.append('(');
for (var i = 0; i < panels.length; i++) {
if (i > 0) {
sb.append(',');
}
sb.append(panels[i].id);
}
sb.append(')');
}
return sb.toString();
}
</script>

9kdf

參考:
http://www.asp.net/AJAX/Documentation/Live/ClientReference/Sys.WebForms/default.aspx

星期五, 1月 02, 2009

網頁博物館

今天在網路上逛阿逛阿..發現一個蠻好玩的網站ㄟ..www.archive.org/web..他可以讓我們看到不同時期的網站樣子..我試一下tw.yahoo.com的網站好了..

Jul 06, 2000

11650343_400x600 

Jun 16, 2004

11650538_400x600

有興趣去玩看看ㄅ..LaughingLaughingLaughingLaughingLaughingLaughing..

星期四, 1月 01, 2009

新外灘美食茶館..吃吃吃..

一月一號..是一年的第一天..中午睡起來..天氣好冷肚子好餓..心想是今年的第一餐吃好一點吧..網路找一找..看到一家「新外灘美食茶館」有無敵厚的咖哩豬排飯和超濃郁起司鍋..二話不說..跟寶貝騎著我的野狼慢慢地龜過去..騎到了輔大旁的建一路..停車..

這是店面..

P1060204

進入後先看看店的裝潢..

P1060179

這是古色古香的作料區..

P1060159

點餐了..我跟寶貝點了.."咖哩豬排飯"跟"起司霜降牛肉鍋"兩份餐..還有一份小菜..先上兩杯飲料..

P1060161 

小菜來了..

P1060180

再來是我的"咖哩豬排飯"..

P1060182

好厚的豬排..

P1060187 

接下來是婆婆的"起司霜降牛肉鍋"..

P1060189

好燙好燙..

P1060197

起司鍋的起司丸..QQ..

P1060199 

呼呼..第一次豬排有吃起來很辛苦的感覺..嘴巴好酸喔..不錯不錯..吃這豬排很有滿足感..TongueTongueTongueTongueTongue..婆婆的起司鍋也不賴..不過畢竟是奶製品..吃多了還是會膩阿..婆婆的感覺是覺得不習慣這火鍋的口味..所以沒有想像中這樣好吃..就可以嘗試看看啦..Silly..

吃飽了走出店家..空氣好冷喔..今年的第一餐..吃這還不錯..所以希望這一年也會過的也不錯..Big HugBig HugBig HugBig HugBig HugBig Hug..