2011-05-24 87 views
2

嗨,我動態創建鏈接按鈕,如下所示。問題是如何在「linktopage」的位置添加鏈接按鈕。目前鏈接按鈕添加在表格下方。鏈接按鈕裏面的html表格單元格asp.net

for(i=0;i<100;i++) 
{ 
LinkButton lnk = new LinkButton(); 
lnk.ID = "lnk" + i; 
lnk.Text = "open profile"; 
lnk.Click += new System.EventHandler(lnk_click); 
this.Page.Form.Controls.Add(lnk); 

htmlstring += "<tr style='height:30px;'>" + 
       "<td>" + firstname + "</td>" + 
       "<td>" + surname + "</td>" + 
       "<td>" + email + "</td>" + 
       "<td>" + mobile + "</td>" + 
       **"<td>" + linktopage + "</td>" +** 
       "</tr>"; 
        } 
+0

哪裏了'linktopage'從何而來? – balexandre 2011-05-24 11:20:18

+0

我只是將它添加爲虛擬佔位符。實際上我希望linkbutton被添加到那裏。例如它應該被渲染爲名字,surnmae,email,mobile,htmllink – sam 2011-05-24 11:26:27

+0

因此,你的'linktopage'是一個動作頁面,就像執行一個頁面或者執行一個命令一樣?你想這是同步還是異步? – balexandre 2011-05-24 11:31:13

回答

0

如何:

更換**"<td>" + linktopage + "</td>" +**,與<td><asp:Panel id="lnktoPage" /></td> 而從代碼添加它,lnktoPage.Controls.Add(lnk);

注意Panel呈現爲DIV在客戶端。

或者......你可以創建動態HTML鏈接:

string strID = "someID"; 
string strLink = @"<a id=""" + strID + @"" + 
       @" onclick="" " + lnk_clickMethodName + @" "" " + 
       @"href=""http://www.w3schools.com"">Visit W3Schools.com!</a>"; 

所以,你最終的方法看起來是這樣的:

for (int i = 0; i < 100; i++) 
{ 
    string strID = "lnk" + i.ToString(); 
    string strLink = @"<a id=""" + strID + @"" + 
        @" onclick="" " + lnk_clickMethodName + @" "" " + 
        @"href=""http://www.w3schools.com"">Visit W3Schools.com!</a>"; 
    StringBuilder html = new StringBuilder(); 

    html.Append(@"<tr style='height:30px;'>"); 
    html.Append(@"<td>" + firstname + "</td>"); 
    html.Append(@"<td>" + surname + "</td>"); 
    html.Append(@"<td>" + email + "</td>"); 
    html.Append(@"<td>" + mobile + "</td>"); 
    html.Append(@"<td>" + strLink + "</td>"); 
    html.Append(@"</tr>"); 
} 
+0

即時獲取此錯誤操作符'+'不能應用於'字符串'和'空' – sam 2011-05-24 11:42:41

0

,而不是鏈接按鈕,使用href標籤;它會很容易.....

+0

我試過使用href,但它不是調用c#方法 – sam 2011-05-24 11:21:15

+0

我使用此代碼Call C# Method,但沒有運氣 – sam 2011-05-24 11:22:23

2

從您的意見

.aspx.cs

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
      Populate(); 
    } 

    private void Populate() 
    { 
     List<MyTableData> list = new List<MyTableData>(); 

     for (int i = 0; i < 10; i++) 
     { 
      list.Add(
       new MyTableData() 
       { 
        FirstName = "Firstname " + i.ToString(), 
        LastName = "Lastname " + i.ToString(), 
        Email = "Email " + i.ToString(), 
        Mobile = "Mobile " + i.ToString(), 
        CmdArgument = i.ToString() 
       }); 
     } 

     gv.DataSource = list; 
     gv.DataBind(); 
    } 

    protected void lnkBtn_Command(object sender, CommandEventArgs e) 
    { 
     string btnNumber = e.CommandArgument.ToString(); 

     // more code... 

     lit.Text = "Button pressed <b>" + btnNumber + "</b>"; 
    } 
} 

public class MyTableData 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Email { get; set; } 
    public string Mobile { get; set; } 
    public string CmdArgument { get; set; } 
} 

的.aspx

<div> 
    <asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" CellPadding="5"> 
     <Columns> 
      <asp:BoundField DataField="FirstName" HeaderText="First name" /> 
      <asp:BoundField DataField="LastName" HeaderText="Last name" /> 
      <asp:BoundField DataField="Email" HeaderText="Email" /> 
      <asp:BoundField DataField="Mobile" HeaderText="Mobile" /> 
      <asp:TemplateField HeaderText=""> 
       <ItemTemplate> 
        <asp:LinkButton ID="lnkBtn" runat="server" OnCommand="lnkBtn_Command" CommandArgument='<%# Eval("CmdArgument") %>' 
         Text='<%# Eval("CmdArgument", "Button {0}") %>' /> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 
</div> 
<hr /> 
<asp:Literal ID="lit" runat="server" /> 

結果

enter image description here

Source Code available

+0

@ balexandre-非常感謝。我會執行此操作並回復給您。 – sam 2011-05-24 12:19:27