Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态创建的按钮拒绝将其称为';s onClick_C#_Asp.net_Asp.net Mvc_Server Side - Fatal编程技术网

C# 动态创建的按钮拒绝将其称为';s onClick

C# 动态创建的按钮拒绝将其称为';s onClick,c#,asp.net,asp.net-mvc,server-side,C#,Asp.net,Asp.net Mvc,Server Side,因此,在使用webforms时,我尝试创建一个页面,将sql server中的表输出到页面加载时的html表。然后我尝试在一列中添加一个按钮,该按钮将重定向到一个页面。唯一的问题是,当我按下按钮时,什么都没有发生。。。我曾尝试在onclick方法中设置断点,但从未达到 num = ds.Tables[0].Rows.Count; htmlTable.Append("<tr style='background-color:#bd0000; color: Whi

因此,在使用webforms时,我尝试创建一个页面,将sql server中的表输出到页面加载时的html表。然后我尝试在一列中添加一个按钮,该按钮将重定向到一个页面。唯一的问题是,当我按下按钮时,什么都没有发生。。。我曾尝试在onclick方法中设置断点,但从未达到

        num = ds.Tables[0].Rows.Count;
        htmlTable.Append("<tr style='background-color:#bd0000; color: White;'><th>ID</th><th>Job #</th><th>Project</th><th>Completed By</th><th>Date Created</th><th></th></tr>");

        if (!object.Equals(ds.Tables[0], null))
        {
            if (ds.Tables[0].Rows.Count > 0)              
            {
                int MAX_VIEW = (ds.Tables[0].Rows.Count > 15) ? 15 : ds.Tables[0].Rows.Count;
                for (int i = 0; i < MAX_VIEW; i++)
                {
                    htmlTable.Append("<td>" + ds.Tables[0].Rows[i]["CCPOF_ID"] + "</td>");
                    htmlTable.Append("<td>" + ds.Tables[0].Rows[i]["Job_Number"] + "</td>");
                    htmlTable.Append("<td>" + ds.Tables[0].Rows[i]["Project_Name"] + "</td>");
                    htmlTable.Append("<td>" + ds.Tables[0].Rows[i]["CompletedBy"] + "</td>");
                    htmlTable.Append("<td>" + ds.Tables[0].Rows[i]["DateCreated"] + "</td>");
                    htmlTable.Append("<td width=\"10%\"><button class=\"astext\" name=\"Btn" + ds.Tables[0].Rows[i]["CCPOF_ID"] + "\" id =\"" + ds.Tables[0].Rows[i]["CCPOF_ID"] + "\" OnClick =\"btnEdit_Click\" runat=\"server\" >Edit</button> | Details</td>");
                    htmlTable.Append("</tr>");
                }
                htmlTable.Append("</table>");
                DBDataPlaceHolder.Controls.Add(new System.Web.UI.WebControls.Literal { Text = htmlTable.ToString() });
            }
            else
            {
                htmlTable.Append("<tr>");
                htmlTable.Append("<td align='center' colspan='4'>There is no Record.</td>");
                htmlTable.Append("</tr>");
            }
        }
    }

    protected void btnEdit_Click(object sender, EventArgs e)
    {
        String id = ((System.Web.UI.WebControls.Button)sender).ID;
        Server.Transfer("CcpofDetails.aspx?ID=" + id);
    }
}
num=ds.Tables[0].Rows.Count;
htmlTable.Append(“IDJob#ProjectCompleted by date Created”);
如果(!object.Equals(ds.Tables[0],null))
{
如果(ds.Tables[0].Rows.Count>0)
{
int MAX_VIEW=(ds.Tables[0].Rows.Count>15)?15:ds.Tables[0].Rows.Count;
对于(int i=0;i
当我在live窗体中检查按钮时,这就是我看到的

<button class="astext" name="Btn10" id="10" onclick="btnEdit_Click" runat="server">Edit</button>
编辑

您没有将corectl按钮添加到web表单中。试着这样做:

Button btnEdit = New Button();
btn.Edit.Click += btnEdit_Click;
frmMain.Controls.Add(btnSave)

如中所示。

我相信您的问题来自ASP.NET不知道您创建了一个按钮。就这一点而言,你所做的只是向页面中输出一些文本

因此,当您发回服务器时,当您单击时,它不知道需要在服务器端执行任何操作

尝试将其创建为对象(一个
System.Web.UI.WebControls.Button
)并将其添加到页面的
控件
集合中。请注意,您必须在初始页面构建和回发时都这样做:如果回发后控件不存在,则连接到它的事件不会触发


让它出现在你的表中间可能需要你用其他方式来创建HTML表,比如建立WebCube <代码>表>代码>对象,并把它添加到你的<代码>控件 Cuff.

< P>你生成动态控件的方式对我来说似乎很奇怪。这不是web表单的工作方式

要在控件上运行事件,必须先将其加载到服务器内存中。但您只是填写了一些只有浏览器才能理解的html文本,而不是asp.net引擎

看看

为了给你一个更好的主意,创建你的按钮如下

private void Page_Load(object sender, System.EventArgs e)
{
    if (!IsPostBack)
        AddControls();
}

protected override void LoadViewState(object savedState)
{
    base.LoadViewState(savedState);
    if (ViewState["controsladded"] == null)
    AddControls();
}

private void AddControls()
{
    TextBox dynamictextbox = new TextBox();
    dynamictextbox.Text = "(Enter some text)";
    dynamictextbox.ID = "dynamictextbox";
    Button dynamicbutton = new Button();
    dynamicbutton.Click += new System.EventHandler(dynamicbutton_Click);
    dynamicbutton.Text = "Dynamic Button";
    Panel1.Controls.Add(dynamictextbox);
    Panel1.Controls.Add(new LiteralControl("<BR>"));
    Panel1.Controls.Add(new LiteralControl("<BR>"));
    Panel1.Controls.Add(dynamicbutton);
    ViewState["controlsadded"] = true;
}

private void dynamicbutton_Click(Object sender, System.EventArgs e)
{
    TextBox tb = new TextBox();
    tb = (TextBox) (Panel1.FindControl("dynamictextbox"));
    Label1.Text = tb.Text;
}
private void页面加载(对象发送方,System.EventArgs e)
{
如果(!IsPostBack)
AddControls();
}
受保护的覆盖无效LoadViewState(对象保存状态)
{
base.LoadViewState(savedState);
如果(ViewState[“controsladded”]==null)
AddControls();
}
私有void AddControls()
{
TextBox dynamictextbox=新建TextBox();
dynamictextbox.Text=“(输入一些文本)”;
dynamictextbox.ID=“dynamictextbox”;
按钮动态按钮=新建按钮();
dynamicbutton.Click+=newsystem.EventHandler(dynamicbutton\u Click);
dynamicbutton.Text=“动态按钮”;
Panel1.Controls.Add(dynamictextbox);
Panel1.Controls.Add(新的LiteralControl(“
”); Panel1.Controls.Add(新的LiteralControl(“
”); Panel1.控件.添加(dynamicbutton); ViewState[“controlsadded”]=true; } 私有void dynamicbutton_单击(对象发送方,System.EventArgs e) { TextBox tb=新的TextBox(); tb=(文本框)(Panel1.FindControl(“dynamictextbox”); Label1.Text=tb.Text; }
只需按下按钮即可disappear@Javant我以前从未遇到过,让我检查一下。你确定这是一个asp.net webforms项目吗?因此,从我能理解的角度来说,我能理解你所说的,控件只有在“编译时”(我不知道web开发等价物)创建或通过asp.net添加时才能被识别。因此,在html文档中注入任何内容都无法与asp.net通信?@Javant是的,你是对的。您不能使用这样的服务器端代码。@Javant只是想提一下,您可以用这种方式使用Javascript代码,因为它将在客户端运行。但他们的任务完全不同