2012-02-08 15 views
5

मुझे अपने विचार में एक टेबल चाहिए जो प्रत्येक पंक्ति में मेरे मॉडल से 3 तत्व डालने जा रहा है। तो जिस तरह से मैं ऐसा करने जा रहा था वह मॉडल के माध्यम से लूप करना है और फोरैच लूप के अंदर एक गिनती चर पर एक चेक है जिसे मैंने स्थापित किया है। यदि गिनती मॉड 3 == 0 मैं नई पंक्ति शुरू करने के लिए </tr><tr> की तरह कुछ करूंगा। यह जिस तरह से मैं चाहता हूं उस पर काम नहीं कर रहा है क्योंकि <tr> के बाद मेरे पास } होगा। तो मूल रूप से मेरा सवाल यह है कि, मॉडल में तत्वों के आधार पर एक रेज़र दृश्य के अंदर मैं एक गतिशील तालिका कैसे बनाऊंगा जहां प्रत्येक पंक्ति में 3 आइटम हों?रेजर देखें गतिशील तालिका पंक्तियां

@{ 
int count = 0; 
<div> 
<table> 
<tr> 
@foreach (var drawing in Model) 
{ 
    <td style="width:240px;margin-left:30px; margin-right:30px;"> 
    <img src="@Url.Action("GetImage", "Home", new { id = drawing.drw_ID })" alt="drawing" /> 
    </td> 
    count++; 
    if(count%3==0) 
    { 
     </tr> 
     <tr> 
    } 
} 
</tr> 
</table> 
</div> 
} 

हो सकता है कि वहाँ है कि मैं दो छोरों का उपयोग कर के बारे में

+1

कोड (स्निपेट) आप वर्तमान में अपने दृश्य में उपयोग कर रहे हैं जोड़ें। –

उत्तर

11

कैसे के बारे में सोच नहीं कर रहा हूँ ऐसा करने का एक बहुत ही आसान तरीका है - यह अपने दस्तावेज़ और अधिक अच्छी तरह से सेटअप बनाने के लिए और इसे थोड़ा अधिक पठनीय कर देगा । इसके अलावा, यह समस्या है कि तब आते हैं, पंक्तियों की संख्या तीन से विभाज्य नहीं है का ख्याल रखता है:

<div> 
<table> 
@for(int i = 0; i <= (Model.Count - 1)/3; ++i) { 
    <tr> 
    for(int j = 0; j < 3 && i + j < Model.Count; ++j) { 
    <td style="width:240px;margin-left:30px; margin-right:30px;"> 
     <img src="@Url.Action("GetImage", "Home", new { id = Model[i + j].drw_ID })" alt="drawing" /> 
    </td> 
    } 
    </tr> 
} 
</table> 
</div> 

संपादित अपने चिपकाया कोड प्रतिबिंबित करने के लिए। ध्यान दें, यह मॉडल मानता है लागू करता IList या किसी सरणी

+0

मुझे यकीन नहीं है कि आप यहां क्या करने की कोशिश कर रहे हैं, लेकिन मुझे लगता है कि अगर आप मेरे कोड को देखते हैं तो आप देखेंगे कि हम 2 अलग-अलग चीजों के बारे में बात कर रहे हैं – esastincy

+0

नहीं, मैं बस इसके बारे में बहुत अलग तरीके से जा रहा हूं - मैंने अपना कोड अपडेट किया है जो कि आप जो करने की कोशिश कर रहे हैं उसे प्रतिबिंबित करने के लिए। ध्यान दें कि यह मानता है कि मॉडल एक आईनेमरेबल या सरणी है। – eouw0o83hf

+1

मुझे यह समाधान पसंद है। मैं काम पर एक बैठक में हूं लेकिन 2 चीजें हैं। 1) छवि टैग में इसे मॉडल [i + j] होना आवश्यक होगा। 2) वेंट इंटीजर डिवीजन बस शेष छंटनी? – esastincy

7

Maybee इस के लिए मुझे

@{ 
int count = 0; 
** 
var tr = new HtmlString("<tr>"); 
var trclose = new HtmlString("</tr>"); 
** 
<div> 
<table> 
<tr> 
@foreach (var drawing in Model) 
{ 
    <td style="width:240px;margin-left:30px; margin-right:30px;"> 
    <img src="@Url.Action("GetImage", "Home", new { id = drawing.drw_ID })" alt="drawing" /> 
    </td> 
    count++; 

    if(count%3==0) 
    { 
    ** 
    trclose 
    tr 
    ** 
    } 
} 
</tr> 
</table> 
</div> 
} 
+0

यह मेरे लिए काम करता है। – Sandeep

2

चेक इस बाहर, तो यह आपके लिए काम करना चाहिए समाधान आप काम करता है के लिए देख रहे है !!!

<h2>Index</h2> 
<table> 
    <tr> 
     @{ 
      var index = 0; 
     } 

     @foreach (int num in Model) 
     { 
      if ((index % 10) == 0) 
      { 
      @Html.Raw("</tr>"); 
      @Html.Raw("<tr>"); 


      } 
      <td> 
       <h2>@num</h2> 
      </td> 
      index++; 
     } 
    </tr> 
</table> 
+0

मुझे पूरे सुझाव के बारे में निश्चित नहीं है, लेकिन @ Html.Raw() ने मेरे लिए चाल बनाई है। – azarc3

0

@christian समाधान काम किया है.मेरे पास "trclose" और "tr" इसलिए यहाँ समाधान है कि उस्तरा ध्यान में रखते हुए मेरे लिए काम किया पोस्टिंग के बारे में सुनिश्चित नहीं था के लिए।

<table> 
     <tr><td><input type="checkbox" id="chkAssetCategories" />&nbsp;SELECT ALL</td></tr> 
     <tr> 
     @{ 
      var count=0; 
      foreach (var item in Model.AssetCategories) 
       { 
        <td><input type="checkbox" class = "Catgories" id='@item.ID' value ='@item.ID' /><label>@item.Name</label></td> 
        if (count%5 == 0) 
        { 
         @:</tr><tr> 
        } 
        count++; 
       } 
     } 
     </table> 
0
@{ int counter = 0;} 
<div> 
    <table> 
     @for(int i = 0; i <= (Model.Count - 1)/3; ++i) { 
      <tr> 
       for(int j = 0; j < 3; ++j) { 
         <td style="width:240px;margin-left:30px; margin-right:30px;"> 
          @Model[counter] 
         </td> 
         counter++; 
       } 
      </tr> 
     } 
    </table> 
</div> 
+0

आप विस्तार करना चाहते हैं आपके उत्तर पर थोड़ा सा, कोड की व्याख्या करें और इसे उपयोगकर्ता के लिए और अधिक उपयोगी बनाएं – Draken

संबंधित मुद्दे