У меня есть ретранслятор asp.net, отображающий данные из sql db. Я удаляю, редактирую и сохраняю кнопки, отображающие рядом с каждой записью, вроде администратора.Получение значения из textarea в репитере ASP.NET?
При нажатии на кнопку edit
скрытые текстовые поля появляются вместо литералов, которые отображают данные. Когда нажата кнопка save
, новые значения должны быть сохранены в db (какие они есть), а литералы отображают новое значение.
Но новые строки значений возвращаются как пустые строки. Они не являются нулевыми, но строка не содержит символов!
Это нормально работало, когда у меня было два TextBox
, но когда я переключил один на HTMLTextArea
, это произошло!
Вот мой соответствующий код ...
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: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>
Почему обе строки возвращаются пустыми, когда, прежде чем они возвращались правильно ?