2010-07-07 5 views
1

SQL 데이터베이스에서 마지막 4 개의 뉴스를 포함해야하는 4 개의 기본 HTML div가 포함 된 작은 웹 페이지를 작성했습니다.SQL 서버에서 레이블로 데이터 바인딩

그래서 저는 그것들을 디자인했고 각각 레이블 컨트롤과 Image 컨트롤에 넣었습니다.

및 SQL에서 정보를 바인딩하려면 DataView 개체를 사용하고 0에서 3까지의 루프를 사용하여 필요한 데이터를 얻었습니다.

하지만 저는 그 방법이 완벽한 것이 아니라고 생각합니다! 그래서 좀 더 명확하고 효과적인 것이 필요합니다!

+0

제품 이름은 "MS SQL"이 아닌 "SQL Server"이며 "sql"태그가 아닌 sql-server 태그를 사용해야합니다. "sql"은 SQL의 일부 형식을 의미합니다. T-SQL, PL/SQL 등 –

답변

1

이 페이지에 <asp:repeater ... /> 컨트롤을 작성하고 SQL 데이터 소스에 바인딩.
데이터 소스 내에서 적절한 Select 문을 작성하거나 LINQ를 사용하십시오.

레이아웃은 데이터보기를 표시 할 만 4 개 항목이 포함되어 있다고 가정하면이

 <asp:Repeater ID="Repeater1" runat="server" DataSourceID="MyDataSource"> 
      <HeaderTemplate> 
       <div style="height: 30px;"> 
        Header info 
       </div> 
      </HeaderTemplate> 
      <ItemTemplate> 
       <div> 
        <%# Eval("SomeInfo")%> 
        <img src='<%# Eval("SomeImage")%>' title='<%# Eval("SomeImageTitle")%>' alt='<%# Eval("SomeImageAlt")%>' /> 
       </div> 
      </ItemTemplate> 
      <SeparatorTemplate> 
       <hr /> 
      </SeparatorTemplate> 
      <FooterTemplate> 
       <div style="height: 25px;"> 
         Footer Stuff 
       </div> 
      </FooterTemplate> 
     </asp:Repeater> 
+0

@ RPM1984는 LinqDataSource에 대해 언급했으며 그는 아마도 옳았습니다. 아마도 SqlDataSource 대신 LinqDataSource를 사용해야합니다. –

+0

감사합니다. 하지만 난 Linq 기술을 가지고 있지 않습니다. 그러나 나는 그들을 절대적으로 얻을 것이다 .. 다시 한번 ..... –

+0

대답을 표시하는 것을 잊지 마세요 –

-1

LINQ을 사용하여 데이터를 검색 할 수 있습니다.

는 예시하려면

var latestNews = (from n in db.News orderby n.Date descending select n).Take(4).ToList(); 

label1.Text = latestNews[0].Content; 
label2.Text = latestNews[1].Content; 
label3.Text = latestNews[2].Content; 
label4.Text = latestNews[3].Content; 
+2

이것은 현재 솔루션을 다시 설명하는 것입니다. –

+0

편집 한 후에도 여전히 누락 된 부분이 있습니다. 갑자기 상위 10 개 뉴스 기사를 선택하려면 어떻게해야합니까? 그는 6 줄의 코드를 추가해야 할 것입니다. 데이터의 제한은 DAL 또는 데이터베이스 자체에서 책임이있는 곳에서 가장 잘 수행됩니다. UI는 제시된 데이터에 대한 간단한 바인딩 작업이어야합니다. – RPM1984

+0

나는 그가 간단한 예제로 질문 한 문제를 해결할뿐입니다. :) 나는 분리 문제에 관해 당신의 의견에 동의하지만 질문자의 문제는 그러한 작은 웹 페이지에 관한 것입니다. 여기에는 DAL/레이어가 없습니다. –

0

같은 중계기 제어 무엇인가, 당신은 아마입니다 DataRepeater 스타일의 ASP.NET 컨트롤 중 하나의 사용을 만들고 싶어.

당신은 컨트롤의 데이터 소스 속성에 DataView를 결합하고, 페이지 또는 컨트롤에 .DataBind()를 호출은 "템플릿"컨트롤 될 것입니다 DataRepeater 내부

(페이지 호출은 모든 컨트롤을 통해 재귀) 의 내용은

같은 것
<div style="st1"><%# Eval("NewsText") %>&nbsp;<img src='<%# Eval("ImgSrc") %>' /></div> 
+0

"John"에 대한 질문에 대답하는 이유는 무엇입니까? 사용자는 Hashem입니다 .-)) –

+0

그렇습니다. 질문에 대한 의견의 저자를 질문의 저자로 잘못 읽었습니다. 미안 하셈. –

+0

답장을 보내 주셔서 감사합니다 :) 오답에 관한 문제가 없습니다. D 지식은 목적입니까, 그렇습니까? –

1

이이 응답에 영향을 미칠 수 있도록, 사용하는,하지만 ...

LinqDataSource가 좋은 방법이 될 것입니다 .NET의 버전을 몰라 당신이 할 수있는 것처럼, 이것을하는 것 if 데이터 레벨 필터링 (즉, TOP 3), 페이지 레벨 필터링 대신 (메모리 루핑에서).

+0

감사합니다. ASP.NET 4.0을 사용 중입니다. Linq 기술을 적용하고 적용 해 보겠습니다. :) –