iT邦幫忙

0

asp webform 後端list拋到前端HTML

  • 分享至 

  • xImage

我想把後端從SQL撈到的資料拋到前端,拋成功了
資料也正確,可是就是印不出來.....
以下是程式碼
HTML端:

<div class="content">
   
    <%
      var todo_list=myColumn();
      String[] headerTxt = new String[10];
        //我的list長度不固定,但這裡無法使用list.size()我要怎麼查list長度呢?
      var i = 0;
      foreach (var item in todo_list) {
          headerTxt[i] = item;
         // Response.Write(item);//東西會print出來,檢查過是我要的值
          i++;
          if (i == 9) { break; }
      }
      Response.Write(headerTxt[0]);
    %>
             
  <asp:Panel ID="gv" runat="server">
   
       <asp:GridView ID="gvData" runat="server"  AutoGenerateColumns="false">  
        <Columns>
          <asp:BoundField DataField="NUM" HeaderText="<%Response.Write(headerTxt[0]) %>"/>//但到這裡就無法print我要的值....
          <asp:BoundField DataField="history" HeaderText="hist_seq" />
      ......
       
           
        </Columns>
        
    </asp:GridView>
    </asp:Panel>
</div>

code behind:

 public List<String> myColumn()
    {
        List<String> list = null;

        MyTable q = new MyTable();
        list = q.getColumn("20220813");//抓取SQL資料,今天的訂貨內容
        return list;
    }
  

謝謝大家

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
3
w4560000
iT邦研究生 5 級 ‧ 2022-08-30 14:00:39
最佳解答

-- 更新
透過 RowDataBound 修改 HeaderText

.aspx

<asp:GridView ID="gvData" runat="server" AutoGenerateColumns="false" OnRowDataBound="gvData_RowDataBound">
    <Columns>
        <asp:BoundField DataField="wlth_lot_number" />
        <asp:BoundField DataField="history" />
    </Columns>
</asp:GridView>

.aspx.cs

public class Test
{
    public string wlth_lot_number { get; set; }
    public string history { get; set; }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        var data = new List<Test>()
        {
            new Test(){ wlth_lot_number = "1", history = "h1" },
            new Test(){ wlth_lot_number = "2", history = "h2" }
        };

        gvData.DataSource = data;
        gvData.DataBind();
    }
}

protected void gvData_RowDataBound(object sender, GridViewRowEventArgs e)
{
    List<string> myColumn = new List<string>() { "Column1", "Column2" };

    if (e.Row.RowType == DataControlRowType.Header)
    {
        for (int i = 0; i < e.Row.Cells.Count; i++)
            e.Row.Cells[i].Text = myColumn[i];
    }
}

結果

Column1 Column2
1 h1
2 h2
神威 iT邦研究生 4 級 ‧ 2022-08-30 14:19:02 檢舉

我表格本身就有print出來了,我主要是Column1,Column2,我希望可以動態改成自己想要的欄位名稱,因為我有很多張表....這樣我要怎麼做呢?

w4560000 iT邦研究生 5 級 ‧ 2022-08-30 15:11:44 檢舉

RowDataBound 去動態改

神威 iT邦研究生 4 級 ‧ 2022-08-31 13:20:14 檢舉

謝謝,我有用RowDataBound 了~這樣就可以show出我要的資料了~

1
實習工程師
iT邦新手 2 級 ‧ 2022-08-30 13:52:45

01.方法1

this.gvData.DataSource = " 你的資料來源 "
this.gvData.DataBind();

02.方法2

<table> 
	<thead>
		<tr>
			<td><!--表頭內容--></td>
		</tr>
	</thead>
	<tbody>
	<%
		foreach(var item in todo_list)
		{
	%>
		<tr>
			<td><%=item%></td>
		</tr>

	<%
		}
	%>
	</tbody>
	
</table>

PS:方法2的話,可以先將您的資料,轉成List< Model >,在藉由foreach,印出來,如果太難的話,可以回歸到方法1 (將資料轉換成Datatable)。

看更多先前的回應...收起先前的回應...
神威 iT邦研究生 4 級 ‧ 2022-08-30 13:57:57 檢舉

沒有用foreach可以嗎?我沒有要每筆印阿,我只是想抽特定的一些資料到不同的欄位顯示(欄位是分散的),所以我希望是用陣列的方式可以在a處塞headerTxt[0]的值,b處塞headerTxt[1]的值

神威 iT邦研究生 4 級 ‧ 2022-08-30 13:58:54 檢舉

而且我想塞在HeaderText裡面...
<asp:BoundField DataField="wlth_lot_number" HeaderText="<%Response.Write(headerTxt[0]) %>"/>

這種寫法,我記得不能這樣寫

你用這段的時候,你按網頁的F12,可以看到你編譯後的內容。

<asp:BoundField DataField="wlth_lot_number" HeaderText="<%Response.Write(headerTxt[0]) %>"/>
2
japhenchen
iT邦超人 1 級 ‧ 2022-08-31 08:35:19

用json當中介

server asp.net後端

    List<string> ret = new List<string>();
    ret.Add("aaaaaaaaaaa");
    ret.Add("BBBBBBBBBBBB");

    Response.Write(JsonConvert.SerializeObject(ret));
    Response.End();

前端Javascript (個人不喜歡XMLHttpRequest,文縐縐....下例就用jquery)

    $.post({
        url: 'test.aspx',
        dataType: 'json',
        data: { 
                job : 'getdata'
                }             
    })
        .done(function(gotdata){
            gotdata.each(function(i,v){
                console.log(v) ; // 你會在F12的主控台內容裡看到伺服器傳回的aaaa BBBB...
            };
        })
神威 iT邦研究生 4 級 ‧ 2022-08-31 13:20:40 檢舉

感謝大大提供的解法~

我要發表回答

立即登入回答