#gridview
#gridview
Вопрос:
Это должно быть просто, но я проигрываю эту битву. У меня есть gridview. Все, что я хочу, это чтобы пользователь мог вводить в него имена, нажимать добавить и добавлять значения. Я также хочу использовать команду delete, если они допустят ошибку. Я пробовал Eval и Bind. Но что-то продолжает идти не так.
У меня есть текстовое поле для ввода первого. И alos текстовое поле в нижнем колонтитуле для ввода значений. При вводе они добавляются в общий список (string) и повторно привязываются к gridview. Но при попытке привязки к списку происходит сбой.
В приведенной ниже разметке DataItem.Псевдоним <- Alias на самом деле является именем общего списка
<asp:GridView ID="gvAlias"
runat="server"
ShowFooter="True" AutoGenerateColumns="false"
ShowHeaderWhenEmpty="True" ShowHeader="False" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.Alias")%> />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtFooterAlias" runat="server" />
<asp:LinkButton ID="btnFooterAdd" runat="server" OnClick="AddFromFooter">Add New</asp:LinkButton>
</FooterTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
<EmptyDataTemplate>
<asp:TextBox ID="txtEmptyAlias" runat="server" />
<asp:LinkButton ID="btnEmptyAdd" runat="server" OnClick="AddFromEmpty">Add New</asp:LinkButton>
</EmptyDataTemplate>
</asp:GridView>
и код, лежащий в основе…
Общедоступный подраздел BindGridView()
Dim oThis As This 'this is a class I have that has a property which is a generic list of string
gvAlias.DataSource = oThis.Alias.ToArray
gvAlias.DataBind()
End Sub
Комментарии:
1. Не могли бы вы подробнее рассказать о том, «что-то продолжает идти не так»?
Ответ №1:
Из вашего описания неясен тип псевдонима. Это анонимный тип?
Однако очень простой способ привязать grid к списку строк — преобразовать их в любое время.
var aliasList = new List<string>() {
"Value1",
"Value2",
"Value3"
};
//This will create new anonymous type with Name field.
var tryName = (from nm in nameList
select new { Alias = nm }).ToArray();
gvAlias.DataSource = tryName;
gvAlias.DataBind();
Теперь вы можете привязать это поле «Псевдоним» к вашей разметке
<asp:TemplateField>
<ItemTemplate>
<%# DataBinder.Eval(Container, "Alias")%> />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtFooterAlias" runat="server" />
<asp:LinkButton ID="btnFooterAdd" runat="server" OnClick="AddFromFooter">Add New</asp:LinkButton>
</FooterTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />