none
iki list string çapraz tablo yapımı RRS feed

  • Soru

  • merhaba 

    iki tane list string den kombine eilmiş bir tablo oluşturmak istiyorum

    var list1 ="1,2,3"  // 3 elemanlı
    
    var list2 ="pr1,pr2" // 2 elemanlı
    
    
    

    ben bunu tablo olarak 

    almak istiyorum Örnek

    <table>
    
    <tr>
    <th>
    1. Sutun
    <th>
    <th>
    2. Sutun
    </th>
    </tr>
    <tr>
    <td>1</td>
    <td>pr1</td>
    </tr>
    <tr>
    <td>1</td>
    <td>pr2</td>
    </tr>
    <tr>
    <td>2</td>
    <td>pr1</td>
    </tr>
    <tr>
    <td>2</td>
    <td>pr2</td>
    </tr>
    <tr>
    <td>3</td>
    <td>pr1</td>
    </tr>
    <tr>
    <td>3</td>
    <td>pr2</td>
    </tr>
    
    </table>


    Üretmek en büyük icraatır

    25 Ekim 2018 Perşembe 13:08

Tüm Yanıtlar

  • Test etmedim ama çalışır umarım.

    @{
        var list1 ="1,2,3";  // 3 elemanlı
    	var list2 ="pr1,pr2"; // 2 elemanlı
    }
        
    <table>
        <tr>
            <th>1. Sutun<th>
            <th>2. Sutun</th>
        </tr>
        
        @foreach (var item1 in list1.Split(','))
        {
            @foreach (var item2 in list2.Split(','))
            {
                <tr>
                    <td>@item1</td>
                    <td>@item2</td>
                </tr>
            }
        }
    </table>

    25 Ekim 2018 Perşembe 13:22
  • Hocam yanıt için teşekkür ederim 

    mesela bu liste 5 adet olursa nasıl yaparım onu


    Üretmek en büyük icraatır

    25 Ekim 2018 Perşembe 15:10
  • public static class HtmlExtensions
        {
            private static readonly IList<IList<string>> Lists = new List<IList<string>>()
            {
                new List<string> {"1", "2", "3"},
                new List<string> {"p1", "p2", "p3", "p4"},
                new List<string> {"z1", "z2"},
                new List<string> {"k1", "k2", "k3"},
                new List<string> {"x1", "x2"}
            };
    
            private static readonly Stack<string> Stack = new Stack<string>();
            private static string _builder;
    
            public static MvcHtmlString GetRows(this HtmlHelper htmlHelper)
            {
                _builder = string.Empty;
                RecursiveFunc();
                return MvcHtmlString.Create(_builder);
            }
    
            private static void RecursiveFunc(int height = 0)
            {
                for (var i = 0; i < Lists[height].Count; i++)
                {
                    Stack.Push(Lists[height][i]);
                    if (height == Lists.Count - 1)
                    {
                        _builder += CreateRow(Stack);
                        Stack.Pop();
                        continue;
                    }
                    RecursiveFunc(height + 1);
                }
                if (Stack.Count == 0)
                    return;
                Stack.Pop();
            }
    
            private static MvcHtmlString CreateRow(Stack<string> stack)
            {
                var tr = CreateBuilder("tr");
    
                foreach (var s in stack.Reverse())
                    tr.InnerHtml += $"<td>{s}</td>";
                return MvcHtmlString.Create(tr.ToString(TagRenderMode.Normal));
            }
    
            private static TagBuilder CreateBuilder(string tagName, string name = null, object htmlAttributes = null)
            {
                var builder = new TagBuilder(tagName);
    
                if (!string.IsNullOrEmpty(name))
                {
                    builder.GenerateId(name);
                    builder.Attributes["name"] = name;
                }
                if (htmlAttributes != null)
                    builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
    
                return builder;
            }
    
        }

    <div class="container mt-5">
        <table class="table">
            <thead>
                <tr>
                    <th scope="col">col1</th>
                    <th scope="col">col2</th>
                    <th scope="col">col3</th>
                    <th scope="col">col4</th>
                    <th scope="col">col5</th>
                </tr>
            </thead>
            <tbody>
                @Html.GetRows()
            </tbody>
        </table>
    </div>


    25 Ekim 2018 Perşembe 16:39
  • hocam merhaba

    bu yazdığınız  c# kodlarını controller içinden mi çağırıcam yoksa viewvs ile mi onu tam olarak anlayamdım


    Üretmek en büyük icraatır

    25 Ekim 2018 Perşembe 19:52
  • hocam merhaba

    bu yazdığınız  c# kodlarını controller içinden mi çağırıcam yoksa viewvs ile mi onu tam olarak anlayamdım


    Üretmek en büyük icraatır

    Yukarıdaki 'HtmlExtensions' sınıfını ayrı bir sınıf olarak oluşturun. Daha sonra herhangi bir view'in içine altta verdiğim table kodlarını yazın.
    26 Ekim 2018 Cuma 16:11