반응형
DB에 저장된 데이터를 이용하여 Wizard Control 내에 위치한 DropDownList의 데이터를 Binding하는데 문제가 있었다.

Step1의 있는 DDL의 데이터는 정상적으로 Binding을 하는데 Step2의 있는 녀석들은 --- Select --- 라는 Default 값만

내내 표시하고 있었다.

XMLDataSource를 통해서 Item들을 가져오면서 어디선까 꼬인 것 같았다.

- ASPX
<asp:DropDownList ID="ddlState" runat="server"  DataSourceID="XmlDataSource1" DataTextField="Text" DataValueField="Value" AppendDataBoundItems="true">
         <asp:ListItem Value="">Select</asp:ListItem>
</asp:DropDownList>

- CS
ddlState.SelectedValue = dr["State"].ToString();

뭐냐 너는..ㅡㅡ;;;

답은 간단했다..

- CS
ddlState.DataBind();
ddlState.SelectedValue = dr["State"].ToString();


아무래도 ddlState Item들이 반영되기 전에 DropDownList의 값을 Binding시키는 것 같다.

그러니 Binding 후 세팅되는 값이 없으니 Default값을 계속 나타냈던 것이였다..ㅠㅠ

사실 다른 프로젝트에 내가 작업 했던 부분에서 찾은 것이다ㅋㅋ 이제는 어디다 적어놓지 않으면

기억이 나지 않네. 큰일이다 정말.크~~~~

오메가 3를 먹자!!!
반응형
반응형

This is another walkthrough, like my last post, demonstrating how to use some new Visual Studio 2010 features available in the October VS2010 CTP. It provides steps to follow in the CTP build; however, you may find that you are able to give feedback on the descriptions below without actually downloading and executing the steps yourself. Please leave your feedback on this feature set at the end of this post, or at the following forum:

http://social.msdn.microsoft.com/Forums/en-US/vs2010ctpvbcs/thread/6172efc9-3075-4426-a773-cf2504f51dca

Thanks!
Lisa

Walkthrough: Office Programmability in Visual Basic and C#

This walkthrough demonstrates several new features in Visual Basic and C#. This walkthrough focuses on how the new features, when used in conjunction, can greatly simplify Office development, although most of these new features are useful in other contexts.

In this walkthrough, you will create a class that represents a bank account. You will then create collections of objects of that class. Next, you will create an Office Excel worksheet, populate it with data from a collection, and embed the worksheet into an Office Word document. Finally, you will modify the build process so that end users can run your program without having the Office primary interop assembly (PIA) installed on their computers.

This walkthrough demonstrates the following new language features:

New features in Visual Basic:

  • Auto-implemented properties
  • Statement lambdas
  • Collection initializers
  • Implicit line continuation

New features in Visual C#:

  • Optional and named parameters
  • Optional ref parameter modifier
  • Dynamic dispatch on COM calls returning Object

New feature in both languages:

  • No-PIA deployment

Prerequisites: You must have Excel 2007 and Word 2007 installed on your computer to complete this walkthrough.

To create a new console application

1. On the File menu, point to New and then click Project. In the New Project dialog box, in the Project types pane, expand Visual Basic or Visual C#, and then click Windows. In the upper right-hand corner, make sure that .NET Framework 4.0 is selected. Then click Console Application and click OK.

2. In Solution Explorer, right-click the project node and then click Add Reference. On the .NET tab, select Microsoft.Office.Interop.Excel, version 12.0. Hold down CTRL and click Microsoft.Office.Interop.Word, version 12.0.

3. Click OK to close the Add Reference dialog box.

To create the bank account class

In this section, you will create a simple class that represents a bank account.

1. In Solution Explorer, right-click the project node, point to Add, and then click Class to open the Add New Item dialog box. Name the file Account.vb (for Visual Basic) or Account.cs (for C#) and click Add.

2. Add the following code to the new class. Note that when you declare a property, it is no longer necessary to also create an explicit backing field because the compiler will add one automatically. This is called an auto-implemented property, and it is new to Visual Basic 10.0:

Visual Basic code

image

Visual C# code

Note: Be sure to delete any namespace declarations before pasting in this code. To simplify the rest of the walkthrough, the Account class should be outside of any namespace.

image

To import the Office namespaces:

There is nothing new in this step. You are just adding Imports statements or using directives so that you do not have to fully qualify the names of the Excel and Word objects each time you reference them.

At the top of the Module1.vb or Program.cs file, add the following code:

Visual Basic code

image

Visual C# code

image

To add data to the account class

This step demonstrates collection initializers, which provide a convenient and expressive way to populate a collection like a list or array with elements when you first create the object. This feature was introduced in C# in Visual Studio 2008 and is introduced in Visual Basic in Visual Studio 2010.

In the Main method of your application, add the following code:

image

To display the account data in Excel

This step demonstrates how to create a new Excel workbook and populate it with data from the List<Account> or List (Of Account) that was initialized in the previous step. Action is a delegate type; several Action delegates are defined that have differing numbers of input parameters, but they all return void. In a later step, you will use a statement lambda when calling DisplayInExcel to supply the inline method that matches the Action delegate signature.

1. Declare the DisplayInExcel method, as shown in the following code:

image

2. At the bottom of the Main method, call the DisplayInExcel method by using the following code. Note the use of the statement lambda, which colors the Excel cell red if the balance is negative.

image

3. To automatically adjust the width of these columns to fit their contents, insert the following code at the end of the DisplayInExcel method:

image

Notice that the AutoFit method is being called on the result of the indexed call to Columns, which has a type of Object. Return values of type Object from COM hosts such as Office are automatically treated as Dynamic in C# 4.0, which allows dynamic dispatch (late binding) and avoids the casts that would be required in C# 3.0:

Visual C# code

image

To embed the Excel spreadsheet into a Word document

In this step, you will create an instance of Word and paste a link to the Excel worksheet into the document. There is nothing new in the Visual Basic code, because Visual Basic has supported named and optional parameters for a long time. Note, however, that C# 4.0 now supports this feature. The PasteSpecial method actually has seven parameters, but they are all optional, so in C# it is no longer necessary to supply arguments for all parameters.

Insert the following code at the end of the Main method:

image

Finally, in the definition for PasteSpecial, note that all of its parameters are ByRef (ref in C#). C# 4.0 allows you to make calls to COM components without having to specify ref in front of each parameter. What can now be done in one line of code used to take about 15 (for this particular function) in C# 3.0:

image

To run the application

  • Press F5 to run the application. First, Excel will open and display a worksheet. Next, Word will open and display a document that contains an embedded link to the Excel worksheet. It should look something like this:

clip_image002[9]

To remove the PIA dependency

1. Start a Visual Studio command prompt (from the Visual Studio Tools folder on the Start menu). Type ildasm and press ENTER. Open your assembly. (It will be in your project’s bin directory, by default: My Documents\Visual Studio 10\Projects\project name\bin)

2. Double-click Manifest. You should see the following entry for Excel in the list. (There will also be a similar entry for Word.)

image

This is an assembly reference to the Excel primary interop assembly (PIA). Because this assembly is referenced by your application, it needs to exist on the end user's computer.

3. The No-PIA feature enables you to compile your application in such a way that references to a PIA are no longer required; the compiler will import whatever types you use from the PIA into your own assembly. This results in a much smaller assembly and easier deployment; the PIAs no longer have to be present on the user's computer. Also, this application can now work with multiple versions of Office (because it does not require a specific version of a PIA).

4. In Solution Explorer, click the Show All References button. Expand the References folder and select Microsoft.Office.Interop.Excel. Press F4 to display the Properties window.

clip_image004[5]

5. Change the Embed Interop Types property from False to True.

6. Repeat step 5 for Microsoft.Office.Interop.Word.

7. Be sure to close Ildasm. Press F5 to rebuild the project. Verify that everything still runs correctly.

8. Repeat steps 1 and 2. Notice that this time the entries for Excel and Word are gone. You no longer need to distribute these PIA DLLs to the user’s computer.


http://blogs.msdn.com/b/vbteam/archive/2008/12/15/walkthrough-office-programmability-in-visual-basic-and-c-in-vs-2010-lisa-feigenbaum.aspx


반응형
반응형

Column names

If a column name contains any of these special characters ~ ( ) # \ / = > < + - * % & | ^ ' " [ ], you must enclose the column name within square brackets [ ]. If a column name contains right bracket ] or backslash \, escape it with backslash (\] or \\).

[C#]

dataView.RowFilter = "id = 10";      // no special character in column name "id"
dataView.RowFilter = "$id = 10";     // no special character in column name "$id"
dataView.RowFilter = "[#id] = 10";   // special character "#" in column name "#id"
dataView.RowFilter = "[[id\]] = 10"; // special characters in column name "[id]"

Literals

String values are enclosed within single quotes ' '. If the string contains single quote ', the quote must be doubled.

[C#]

dataView.RowFilter = "Name = 'John'"        // string value
dataView.RowFilter = "Name = 'John ''A'''"  // string with single quotes "John 'A'"

dataView.RowFilter = String.Format("Name = '{0}'", "John 'A'".Replace("'", "''"));

Number values are not enclosed within any characters. The values should be the same as is the result of int.ToString() or float.ToString() method for invariant or English culture.

[C#]

dataView.RowFilter = "Year = 2008"          // integer value
dataView.RowFilter = "Price = 1199.9"       // float value

dataView.RowFilter = String.Format(CultureInfo.InvariantCulture.NumberFormat,
                     "Price = {0}", 1199.9f);

Date values are enclosed within sharp characters # #. The date format is the same as is the result of DateTime.ToString() method for invariant or English culture.

[C#]

dataView.RowFilter = "Date = #12/31/2008#"          // date value (time is 00:00:00)
dataView.RowFilter = "Date = #2008-12-31#"          // also this format is supported
dataView.RowFilter = "Date = #12/31/2008 16:44:58#" // date and time value

dataView.RowFilter = String.Format(CultureInfo.InvariantCulture.DateTimeFormat,
                     "Date = #{0}#", new DateTime(2008, 12, 31, 16, 44, 58));

Alternatively you can enclose all values within single quotes ' '. It means you can use string values for numbers or date time values. In this case the current culture is used to convert the string to the specific value.

[C#]

dataView.RowFilter = "Date = '12/31/2008 16:44:58'" // if current culture is English
dataView.RowFilter = "Date = '31.12.2008 16:44:58'" // if current culture is German

dataView.RowFilter = "Price = '1199.90'"            // if current culture is English
dataView.RowFilter = "Price = '1199,90'"            // if current culture is German

Comparison operators

Equal, not equal, less, greater operators are used to include only values that suit to a comparison expression. You can use these operators = <> < <= > >=.

Note: String comparison is culture-sensitive, it uses CultureInfo from DataTable.Localeproperty of related table (dataView.Table.Locale). If the property is not explicitly set, its default value is DataSet.Locale (and its default value is current system culture Thread.Curren­tThread.Curren tCulture).

[C#]

dataView.RowFilter = "Num = 10"             // number is equal to 10
dataView.RowFilter = "Date < #1/1/2008#"    // date is less than 1/1/2008
dataView.RowFilter = "Name <> 'John'"       // string is not equal to 'John'
dataView.RowFilter = "Name >= 'Jo'"         // string comparison

Operator IN is used to include only values from the list. You can use the operator for all data types, such as numbers or strings.

[C#]

dataView.RowFilter = "Id IN (1, 2, 3)"                    // integer values
dataView.RowFilter = "Price IN (1.0, 9.9, 11.5)"          // float values
dataView.RowFilter = "Name IN ('John', 'Jim', 'Tom')"     // string values
dataView.RowFilter = "Date IN (#12/31/2008#, #1/1/2009#)" // date time values

dataView.RowFilter = "Id NOT IN (1, 2, 3)"  // values not from the list

Operator LIKE is used to include only values that match a pattern with wildcards. Wildcardcharacter is * or %, it can be at the beginning of a pattern '*value', at the end 'value*', or at both '*value*'. Wildcard in the middle of a patern 'va*lue' is not allowed.

[C#]

dataView.RowFilter = "Name LIKE 'j*'"       // values that start with 'j'
dataView.RowFilter = "Name LIKE '%jo%'"     // values that contain 'jo'

dataView.RowFilter = "Name NOT LIKE 'j*'"   // values that don't start with 'j'

If a pattern in a LIKE clause contains any of these special characters * % [ ], those characters must be escaped in brackets [ ] like this [*], [%], [[] or []].

[C#]

dataView.RowFilter = "Name LIKE '[*]*'"     // values that starts with '*'
dataView.RowFilter = "Name LIKE '[[]*'"     // values that starts with '['

The following method escapes a text value for usage in a LIKE clause.

[C#]

public static string EscapeLikeValue(string valueWithoutWildcards)
{
  StringBuilder sb = new StringBuilder();
  for (int i = 0; i < valueWithoutWildcards.Length; i++)
  {
    char c = valueWithoutWildcards[i];
    if (c == '*' || c == '%' || c == '[' || c == ']')
      sb.Append("[").Append(c).Append("]");
    else if (c == '\'')
      sb.Append("''");
    else
      sb.Append(c);
  }
  return sb.ToString();
}

[C#]

// select all that starts with the value string (in this case with "*")
string value = "*";
// the dataView.RowFilter will be: "Name LIKE '[*]*'"
dataView.RowFilter = String.Format("Name LIKE '{0}*'", EscapeLikeValue(value));

Boolean operators

Boolean operators AND, OR and NOT are used to concatenate expressions. Operator NOT has precedence over AND operator and it has precedence over OR operator.

[C#]

// operator AND has precedence over OR operator, parenthesis are needed
dataView.RowFilter = "City = 'Tokyo' AND (Age < 20 OR Age > 60)";

// following examples do the same
dataView.RowFilter = "City <> 'Tokyo' AND City <> 'Paris'";
dataView.RowFilter = "NOT City = 'Tokyo' AND NOT City = 'Paris'";
dataView.RowFilter = "NOT (City = 'Tokyo' OR City = 'Paris')";
dataView.RowFilter = "City NOT IN ('Tokyo', 'Paris')";

Arithmetic and string operators

Arithmetic operators are addition +, subtraction -, multiplication *, division / and modulus %.

[C#]

dataView.RowFilter = "MotherAge - Age < 20";   // people with young mother
dataView.RowFilter = "Age % 10 = 0";           // people with decennial birthday

There is also one string operator concatenation +.

Parent-Child Relation Referencing

parent table can be referenced in an expression using parent column name with Parent.prefix. A column in a child table can be referenced using child column name with Child. prefix.

The reference to the child column must be in an aggregate function because child relationships may return multiple rows. For example expression SUM(Child.Price) returns sum of all prices in child table related to the row in parent table.

If a table has more than one child relation, the prefix must contain relation name. For example expression Child(OrdersToItemsRelation).Price references to column Price in child table using relation named OrdersToItemsRe lation.

Aggregate Functions

There are supported following aggregate functions SUM, COUNT, MIN, MAX, AVG (average), STDEV(statistical standard deviation) and VAR (statistical variance).

This example shows aggregate function performed on a single table.

[C#]

// select people with above-average salary
dataView.RowFilter = "Salary > AVG(Salary)";

Following example shows aggregate functions performed on two tables which have parent-child relation. Suppose there are tables Orders and Items with the parent-child relation.

[C#]

// select orders which have more than 5 items
dataView.RowFilter = "COUNT(Child.IdOrder) > 5";

// select orders which total price (sum of items prices) is greater or equal $500
dataView.RowFilter = "SUM(Child.Price) >= 500";

 


By  http://dotnet.fibo.us/?p=331

반응형
반응형

webtest 튜토리얼


 

 

Webtest XML을 이용해 작업을 스크립트한 다음 그 스크립트 내용대로 작업을 진행할 수 있는 web 자동화 테스트 툴이다.

기존 테스트를 수행하기 위해 개발자가 직접 수행한 반복적인 비 생산적 작업을 Webtest을 이용하면 쉽고 빠르게 테스트를 진행 할 수 있다.

 

 다음은 WebTest를 이용한 테스트 결과 화면이다.


 

사용자 삽입 이미지

그림 1 webtest의 테스트 결과 페이지

 

상기 화면은 단순히 페이지를 33번 연속으로 방문한 결과를 나타낸 페이지이다. 이렇게 canoo webtest는 작업 결과를 html화면으로 출력해 보다 쉽게 결과를 확인할 수 있게 도와준다.

 

 

 

설치

Canoo Webtest 설치 방법은 어렵지 않다. Webtest의 공식 홈페이지에 접속해 다운로드하면된다

.

사용자 삽입 이미지

그림 2 webtest 다운롣드 페이지

 

현재 가장 최신 버전은 2.6 이므로 2.6버전을 다운로드한다. Webtest에서 다운로드 받을 수 있는 압축파일은 크게 5개이다. build.zip, doc.zip, src.zip, selftest.war, build-maven.zip이 있는데 각 파일 이름별로 해당 패키지가 들어 있다. 우리는 우선 모든 파일을 포함하고 있는 Build.zip을 다운로드 하기로 한다.

 

다운로드된 파일의 압축을 풀고 webtest를 설치하고자 하는 디렉토리에 복사한다.

 

 

사용자 삽입 이미지

그림 3 webtest의 저장 경로

 

Webtest“Program Files” 밑에 설치 하는 것이 일반적이므로 압축을 푼뒤 디렉토리 이름을 webtest로 변경한 뒤 Program Files밑에 둔다.

 

다음은 환경변수 설정을 해야 한다.

내컴퓨터에서 마우스 오른쪽 버튼을 누르고 시스템 등록정보, 혹은 winkey + pause를 눌러 시스템 등록정보에 들어간뒤 고급탭에 있는 환경변수에 들어간다.


사용자 삽입 이미지

그림 4 시스템 등록 정보

 

 이곳에서 path에 다음과 같이 webtest 디렉토리에 포함된 bin디렉토리를 path 에 추가한다.

 

“C:\Program Files\WebTest\bin”

 

사용자 삽입 이미지

그림 5 환경변수 설정

 

환경 변수 설정이 끝났으면 커맨드라인에서 설치완료를 확인한다.

 

C:\> webtest –version

 

다음과 같이 버전정보가 출력되면 설치가 완료된 것이다.

 


사용자 삽입 이미지

그림 6 설치후 버젼 확인

 

Webtest의 예

 

Webtest의 실행을 위해서 우선 테스트 디렉토리를 하나 생성한다.

디렉토리를 하나 생성했으면 그 밑에 테스트 파일을 위핸 simpletest.xml파일을 생성한다.

 

사용자 삽입 이미지

그림 7 테스트 디렉토리

 

그 다음 테스트 스크립트를 작성한다.

 

<?xml version="1.0" encoding="euc-kr"?>

<project name="SimpleTest" basedir="." default="wt.full">

 

  <property name="webtest.home" location="C:\Program Files\WebTest" />

  <import file="${webtest.home}/webtest.xml"/>

 

  <target name="wt.testInWork">

             <webtest name="check that WebTest is FreeEnd's top 'bolg' result">

                           <invoke url="http://freeend.tistory.com/" description="FreeEnd Blog"/>

                           <verifyTitle text="FreeEnd" />

             </webtest>

  </target>

</project>


 

 

 

 우선 한글 사용을 위해 xml encoding형식을 euc-kr로 설정한다.

 

<?xml version="1.0" encoding="euc-kr"?>

 

 

 현재 테스트 프로젝트의 이름 등의 환경을 설정한다. Name은 이름 basedir은 작업 디렉토리이다.

 

<project name="SimpleTest" basedir="." default="wt.full">

 

 

 웹 테스트의 빌드를 위해 webtest에서 제공하는 webtest.xml파일을 import한다. 이 파일은 webtest를 설치한 디렉토리에 있으므로 location webtest_home 디렉토리를 설정해 주면 된다.

Property태그는 wettest,home의 프로퍼티를 설정해 주는 탭으로 webtest의 홈 디렉토리를 넣어준다.  이렇게 property를 설정해 두면 webtest의 홈 디렉토리를 webtest,home으로 대체하여 사용할 수 있다.

 

  <property name="webtest.home" location="C:\Program Files\WebTest" />

  <import file="${webtest.home}/webtest.xml"/>

 

 

실제로 이루어질 테스트의 한 step의 이름을 입력한다. 여기서는 FreeEnd Blog 라는 페이지를 대상으로 삼았으므로 그에 알맞은 테스트 이름을 입력하였다.

 

             <webtest name="check that WebTest is FreeEnd's top 'bolg' result">

 

 

다음으로 가장 중요한 실제 수행할 스크립트를 작성하는 부분이다. 이곳에서는 페이지를 요청하는 단순한 작업이므로 그에 해당하는 invoke 태그를 이용해 url을 입력한다. Description은 해당 요청사항에 대한 설명을 입력한다.

                           <invoke url="http://freeend.tistory.com/" description="FreeEnd Blog"/>

 

 

다음은 해당 요청 페이지가 정확하게 요청되어 원하는 페이지가 응답 되었는지를 확인하는 태그이다. verifyTitle 태그는 요청 페이지의 헤더 부분에 있는 title태그의 같을 가져와 자신의 태그에 있는 text값과 비교해 같으면 success, 다르면 fail을 리턴해 요청의 성공 실패를 확인시켜 준다.

 

                           <verifyTitle text="FreeEnd" />

 

 

 

실행

 

요청 스크립트의 작성이 끝나면 잘 저장한 후 실행 시킨다. 실행 명령어는 다음과 같다.

 

 

 C:\WebTestTest> webtest -buildfile simpletest.xml

 

 

다음은 요청된 스크립트의 실행 화면이다.

 

사용자 삽입 이미지

그림 8 실행중인 webtest의 콘솔화면

 

 

 

사용자 삽입 이미지

그림 9 테스트 모니터

 

테스트가 성공적으로 끝나면 windows에 설정된 default 브라우저로 결과같이 다음과 같이 출력된다.

 

사용자 삽입 이미지

그림 10 테스트 완료후 결과

 

 

 

 현재 위 테스트는 요청 페이지로의 요청에 대해 테스트 한 것이다. 이러한 테스트는 아주 기초적인 스크립트 작성으로 다양한 테그를 이용해 필드 채우기, 버튼클릭, 하이퍼링크 따라가기 등 많은 작업을 요청할 수 있다. 다른 요청 태그를 알고 싶다면 http://webtest.canoo.com/webtest/manual/stepIndex.html 를 방문하면 다양한 태그를 얻어 사용할 수 있다

반응형
반응형
SqlDataSource를 사용하지 않고 .cs에서 페이징으로 구성할때는
아래와 같이 PagePropertiesChanging 이벤트를 추가해줘야한다.

protected void Listview_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
{
     DataPager dp;
     dp = ((ListView)sender).FindControl("DataPager1") as DataPager;
     dp.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);

     ListView.DataSource = GetDataSet();
     ListView.DataBind();
}


GetDataSet()은 사용하시는 분의 취향에 따라 사용해주세용.~~
반응형
반응형

-- Aspx
<%@ Register TagPrefix="cc1" Namespace="RashidPager" %>   // 네임스페이스 등록


<cc1:Pager ID="PagerMyCase"
                  runat="server"
                  OnPageChange="PagerMyCase_PageChange"
                  SliderSize="5"
                  ShowFirstAndLast="false"
                  ShowPreviousAndNext="true" 
                  ShowInfo="True"
                  RowPerPage="10" 
                  CurrentPageCssClass="paging_current"
                  OtherPageCssClass="paging_other"
                  ShowTip="false"
                  HideOnSinglePage="false"
                  NextText="&gt"
                  PreviousText="&lt"  />


-- CS
using RashidPager;

<Data Bind>
// 페이지당 행의 수
db.AddInParameter(dbCmd, "@PageSize", DbType.Int16, PagerSubmittedCase.RowPerPage);  
// 현재 페이지 Number
db.AddInParameter(dbCmd, "@CurrentPage", DbType.Int16, PagerSubmittedCase.CurrentPageNo);
// 총 데이터 수(return value)
db.AddOutParameter(dbCmd, "@TotalCount", DbType.String, 5);

// 총 데이터 수를 Pager 클래스의 TotalRow의 변수에 값을 배정한다
PagerSubmittedCase.TotalRow = Convert.ToInt32(db.GetParameterValue(dbCmd, "@TotalCount"));


// 페이지 Change 이벤트 설정
// 페이지 번호나 Next, Previous가 클릭될때 이벤트가 발생한다.
protected void PagerSubmittedCase_PageChange(object sender, PageChangeEventArgs e)
{
     ((Pager)sender).CurrentPageNo = e.PageNo;
     Submitted_DataBind();
}


-- Database
CREATE PROC ProcName
    @PageSize        tinyint    = 10,
    @CurrentPage    int    = 1,
    @TotalCount        int output
AS
BEGIN
    SET NOCOUNT ON
   
    DECLARE    @UpperBand    int
    DECLARE    @LowerBand    int
   
    SET @UpperBand = ((@CurrentPage - 1) * @PageSize) + 1
    SET @LowerBand = @CurrentPage * @PageSize

    -- Row Number가 추가된 임시 테이블 생성
     ;WITH tempTable AS (
        SELECT        컬럼들,  Row_Number() OVER (ORDER BY 정렬기준 컬럼 DESC) AS RowNum
        FROM           테이블명
        WHERE         조건절
    )

    -- 데이터 Select
    SELECT    컬럼들
    FROM       tempTable
    WHERE     RowNum BETWEEN     @UpperBand AND @LowerBand
   
    -- Total Count
    SELECT        @TotalCount = Count(*)
    FROM           테이블명
    WHERE         조건절
END

반응형
반응형
 foreach (Control c in Page.Form.Controls)
      {
          switch (c.GetType().ToString())
          {
              case ("System.Web.UI.WebControls.TextBox"):
                  paramters.Add(c.ID, ((TextBox)c).Text.ToString());
                  break;

반응형
반응형

IE8에 의해서 간간히 발생하는 오류로써

처음에는 무슨 오류가 싶어서 하루 종일 소스만 보면서 파고 들었는데

결국 "..WebResource.axd?d=XXXXXXX" d 파라미터 뒤에 QueryString이 중간에 짤려있었다..ㅠㅠ

간단한 해결 방안은!!!!!!!!!!!!!

head안에 정의 되어 있는 <meta http-equiv="content-type" content="text/html; charset=utf-8" />

메타태그를 Page_Load 함수로 옮겨놓는 것이다.ㅋ

Response.ContentType = "text/html";
Response.Charset = "utf-8";

요렇게 말이다.!!

브라우저의 문제였단 말인가..ㅜㅜ

아..머리아포~~

참고 사이트
http://blog.soft-cor.com/?tag=/scriptresource.axd
http://alterprocedure.net/articles/alterprocedure/aspnet-causing-corrupted-html-with-webresourceaxd-and-scriptresourceaxd.aspx
반응형

+ Recent posts