首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ASP.NET中继器中的textarea中获取值?

从ASP.NET中继器中的textarea中获取值?
EN

Stack Overflow用户
提问于 2014-11-28 15:10:57
回答 1查看 973关注 0票数 0

我有一个asp.net中继器控件,显示来自sql的数据。我有删除,编辑和保存按钮显示在每个记录旁边,有点像一个管理员。

单击edit时,隐藏的文本框将取代显示数据的文字。单击save时,应该将新值保存到db (它们是),文本显示新值。

但是新的值字符串作为空字符串返回。它们不是空的,但是字符串不包含任何字符!

当我有两个TextBox时,这很好,但是当我切换到一个HTMLTextArea时,这种情况就发生了!

这是我的相关密码。

代码语言:javascript
复制
if (e.CommandName == "edit")
    {
        ((TextBox)e.Item.FindControl("Onebox")).Visible = true;
        ((TextBox)e.Item.FindControl("Onebox")).Text = ((Literal)e.Item.FindControl("onelit")).Text;
        ((HtmlTextArea)e.Item.FindControl("Threebox")).Visible = true;
        ((HtmlTextArea)e.Item.FindControl("Threebox")).Value = ((Literal)e.Item.FindControl("threelit")).Text;
        DataTable dt = new DataTable();
        DataTable dt2 = new DataTable();



        ((Literal)e.Item.FindControl("onelit")).Visible = false;
        ((Literal)e.Item.FindControl("threelit")).Visible = false;

        ((LinkButton)e.Item.FindControl("LinkButton2")).Visible = false;
        ((LinkButton)e.Item.FindControl("LinkButton3")).Visible = true;



    }

    if (e.CommandName == "save")
    {     

        string newoneval = ((TextBox)e.Item.FindControl("Onebox")).Text;
        string newtwoval = ((HtmlTextArea)e.Item.FindControl("Threebox")).Value;

        ((TextBox)e.Item.FindControl("Onebox")).Visible = false;
        ((Literal)e.Item.FindControl("onelit")).Text = ((TextBox)e.Item.FindControl("Onebox")).Text;
        ((HtmlTextArea)e.Item.FindControl("Threebox")).Visible = false;
        ((Literal)e.Item.FindControl("threelit")).Text = ((HtmlTextArea)e.Item.FindControl("Threebox")).Value;


        ((Literal)e.Item.FindControl("onelit")).Visible = true;
        ((Literal)e.Item.FindControl("threelit")).Visible = true;

        ((LinkButton)e.Item.FindControl("LinkButton2")).Visible = true;
        ((LinkButton)e.Item.FindControl("LinkButton3")).Visible = false;


        if(newoneval != null && newtwoval != null)
        {
            SqlDataReader dataReader;
            String editstr = "update news set title = '" + newoneval + "',  short_desc ='" + newtwoval + "' where pk_ID = @pk_ID";
            SqlCommand command = new SqlCommand(editstr, conn);
            command.Parameters.AddWithValue("@pk_ID", e.CommandArgument);
            try
            {
                conn.Open();
                dataReader = command.ExecuteReader();
                dataReader.Close();
                command.Dispose();
                conn.Close();
                BindRepeater();
            }
            catch (Exception exc)
            {
                Response.Write(exc);
            }

        }
        else
        {
            Response.Write("No value");
        }

这是asp中继器模板..。

代码语言:javascript
复制
<asp:Repeater ID="list_holder" runat="server" OnItemCommand="runCommands">
        <ItemTemplate>
            <table>
                <tr>
                    <!-- FIRST BOX CONTROLS ---------------->
                    <td class="cells">
                        <asp:Textbox id="Onebox" 
                            text=''
                            runat="server"
                            enabled="true"
                            visible="false">
                        </asp:Textbox>

                        <asp:Literal id="onelit"
                            runat="server"
                            text='<%# DataBinder.Eval(Container.DataItem ,"title") %>'
                         />
                    </td>

                    <td class="cells">
                        <textarea id="Threebox"
                            text=''
                            runat="server"
                            enabled="true"
                            Visible="false">
                        </textarea>

                        <asp:Literal id="threelit"
                            text='<%# DataBinder.Eval(Container.DataItem ,"short_desc") %>'
                            runat="server"
                        />
                    </td>
                    <!-------------------------------------->

                    <!---- Link Buttons ------------------------>
                    <td class="cells">
                        <asp:LinkButton ID="LinkButton1"
                            runat="server" 
                            CommandName="delete" 
                            OnClientClick='javascript:return confirm("Are you sure you want to delete?")' 
                            CommandArgument='<%# DataBinder.Eval(Container.DataItem, "pk_ID") %>'
                            CausesValidation="false">Delete</asp:LinkButton>  
                    </td>

                    <td class="cells">
                        <asp:LinkButton ID="LinkButton2"
                            runat="server"
                            CommandName="edit"  
                            CommandArgument='<%# DataBinder.Eval(Container.DataItem, "pk_ID") %>'
                            CausesValidation="false"
                            Visible ="true">Edit</asp:LinkButton> 

                        <asp:LinkButton ID="LinkButton3"
                            runat="server"
                            CommandName="save"  
                            CommandArgument='<%# DataBinder.Eval(Container.DataItem, "pk_ID") %>'
                            CausesValidation="false"
                            Visible ="false">Save</asp:LinkButton>
                    </td>
                    <!-------------------------------------------------->
                </tr>
            </table>
        </ItemTemplate>
    </asp:Repeater>

在字符串正确返回之前,为什么返回的字符串都是空的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-28 17:17:17

在ASP.NET中,当您将“可见”设置为“false”时,“控件”不会在页面上呈现。

关于更多的见MSDN

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27191489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档