Как я могу показать заголовок/нижний колонтитул Asp.Net Gridview с пустым источником данных?Показать заголовок/нижний колонтитул Gridview с пустым источником данных?
ответ
Есть Распознать this article
В качестве альтернативы, вы можете определить свой собственный пользовательский интерфейс пользователя для пустой строки данных с помощью EmptyDataTemplate property.
Вы можете сделать это, присвоив одну фиктивную строку источнику данных сетки. По умолчанию источник данных будет заполнен фиктивной строкой. Таким образом, сетка будет показывать нижний колонтитул &. Чтобы скрыть строку, вы можете добавить одно фиктивное поле для отображения элемента управления или нет. И привяжите это поле к управлению видимым свойством. Наконец, когда вы добавляете фактическую строку в источник данных ... Удалите фиктивную строку, которую вы создали.
Пример - Источник:
<asp:GridView ID="grdQualify" runat="server" Width="100%" AutoGenerateColumns="False" ShowFooter="true"
EnableModelValidation="True">
<Columns>
<asp:TemplateField HeaderText="Qualifying Exam">
<ItemTemplate>
<asp:TextBox ID="txtQualifyingExam" runat="server" Text='<%# Eval("QualifyingExam") %>' Visible='<%# Eval("ShowVisible") %>'></asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtQualifyingExamF" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Roll Number">
<ItemTemplate>
<asp:TextBox ID="txtRollNumber" runat="server" Text='<%# Eval("RollNumber") %>' Visible='<%# Eval("ShowVisible") %>'></asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtRollNumberF" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Admission Round">
<ItemTemplate>
<asp:TextBox ID="txtAdmissionRound" runat="server" Text='<%# Eval("AdmissionRound") %>' Visible='<%# Eval("ShowVisible") %>'></asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtAdmissionRoundF" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Marks Obtained">
<ItemTemplate>
<asp:TextBox ID="txtMarksObtained" runat="server" Text='<%# Eval("MarksObtained") %>' Visible='<%# Eval("ShowVisible") %>'></asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtMarksObtainedF" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Marks Out of">
<ItemTemplate>
<asp:TextBox ID="txtMarksOutOf" runat="server" Text='<%# Eval("MarksOutOf") %>' Visible='<%# Eval("ShowVisible") %>'></asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtMarksOutOfF" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Percentage">
<ItemTemplate>
<asp:TextBox ID="txtPercentage" runat="server" Text='<%# Eval("Percentage") %>' Visible='<%# Eval("ShowVisible") %>'></asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtPercentageF" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Remarks">
<ItemTemplate>
<asp:TextBox ID="txtRemarks" runat="server" Text='<%# Eval("Remarks") %>' Visible='<%# Eval("ShowVisible") %>'></asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtRemarksF" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnDeleteQualify" runat="server" Text="Delete"
Visible='<%# Eval("ShowVisible") %>' onclick="btnDeleteQualify_Click"></asp:Button>
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="btnAddQualify" runat="server" Text="Add"
onclick="btnAddQualify_Click"></asp:Button>
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Пример - Код:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (ViewState["QualifyDetails"] == null)
ViewState["QualifyDetails"] = new List<Entity_StudentAcademicQualify>();
GridDataBindQualify((List<Entity_StudentAcademicQualify>)ViewState["QualifyDetails"]);
}
}
private void GridDataBindQualify(List<Entity_StudentAcademicQualify> list)
{
if (list.Count == 0)
{
Entity_StudentAcademicQualify studentQualify = new Entity_StudentAcademicQualify();
studentQualify.ShowVisible = false;
studentQualify.QualifyingExam = string.Empty;
studentQualify.RollNumber = string.Empty;
studentQualify.AdmissionRound = string.Empty;
studentQualify.MarksObtained = 0;
studentQualify.MarksOutOf = 0;
studentQualify.Percentage = 0;
studentQualify.Remarks = string.Empty;
list.Add(studentQualify);
}
else
{
list.RemoveAt(0);
}
grdQualify.DataSource = list;
grdQualify.DataBind();
ViewState["QualifyDetails"] = list;
}
protected void btnAddQualify_Click(object sender, EventArgs e)
{
GridViewRow row = (GridViewRow)((Button)sender).Parent.Parent;
List<Entity_StudentAcademicQualify> studentQualifys =
(List<Entity_StudentAcademicQualify>)ViewState["QualifyDetails"];
Entity_StudentAcademicQualify studentQualify = new Entity_StudentAcademicQualify();
studentQualify.ShowVisible = true;
studentQualify.QualifyingExam = ((TextBox)row.FindControl("txtQualifyingExamF")).Text;
studentQualify.RollNumber = ((TextBox)row.FindControl("txtRollNumberF")).Text;
studentQualify.AdmissionRound = ((TextBox)row.FindControl("txtAdmissionRoundF")).Text;
studentQualify.MarksObtained = Convert.ToInt32(((TextBox)row.FindControl("txtMarksObtainedF")).Text);
studentQualify.MarksOutOf = Convert.ToInt32(((TextBox)row.FindControl("txtMarksOutOfF")).Text);
studentQualify.Percentage = Convert.ToInt32(((TextBox)row.FindControl("txtPercentageF")).Text);
studentQualify.Remarks = ((TextBox)row.FindControl("txtRemarksF")).Text;
studentQualifys.Add(studentQualify);
GridDataBindQualify(studentQualifys);
}
protected void btnDeleteQualify_Click(object sender, EventArgs e)
{
List<Entity_StudentAcademicQualify> studentQualifys =
(List<Entity_StudentAcademicQualify>)ViewState["QualifyDetails"];
studentQualifys.RemoveAt(((GridViewRow)((Button)sender).Parent.Parent).RowIndex);
GridDataBindQualify(studentQualifys);
}
Я прочитал много сообщений в Интернете об этом, и в конце этого я пришел с моим собственным решением, которое адресует мои потребности и, надеюсь, потребности других, включая этот вопрос.
Необходимость показать верхнего/нижнего колонтитула может быть потому, что 1) Я хочу, чтобы пользователь видел структуру сетки и 2) Я хочу использовать колонтитул, чтобы добавить новые данные в таблицу.
Поэтому просто показывать «нет данных» недостаточно.
Таким образом, мое решение является тестом, если доступны данные. Если нет, то создайте структуру источника данных и заполните нужные поля одной строки значениями по умолчанию. Это важно, потому что, если вы привязываете источник данных к сетке, когда поля типа boolean и даты пустые, вы будете иметь ошибки «DBNull». Затем привяжите этот новый источник данных к сетке. затем скрыть строку в этой последовательности.
Protected Sub BindGrid()
con = New SqlConnection("mainLocal")
Dim da As New SqlDataAdapter("SELECT * FROM Test", con)
Dim dt As New DataTable()
da.Fill(dt)
dim rows as integer = dt.Rows.Count
If rows = 0 Then
Dim dr As DataRow = Nothing
dr = dt.NewRow()
dr("isActive") = False
dr("Dated") = Date.Now()
dt.Rows.Add(dr)
End If
Me.TestGridView.DataSource = dt
Me.TestGridView.DataBind()
If rows = 0 Then Me.TestGridView.Rows(0).Visible = False
End Sub
Я думаю, гораздо проще, короче, аккуратно!
- 1. Отображение нижнего колонтитула gridview с пустым (linqdatasource) источником данных
- 2. Video.js с пустым источником
- 3. GridView с источником более чем один данных
- 4. GridView не связывается с источником данных
- 5. GridView, как показать нижний колонтитул, когда gridview пуст
- 6. столбцы не показаны при привязке к gridview с использованием linq to sql с пустым источником данных
- 7. DataGridView отсутствует новая строка с пустым источником данных
- 8. Связать datagrid с пустым источником товаров?
- 9. Проблемы с кодированием с источником gridview xml
- 10. редактирование gridview без использования управления источником данных
- 11. Ошибки datacontrols - Gridview с источником данных, но с использованием шаблонов?
- 12. Как связать gridview с источником данных с динамическим предложением WHERE?
- 13. GridView с декларативным (Html side) источником данных и кодом-источником данных
- 14. Отображать нижний колонтитул gridview
- 15. Редактируемый Gridview с кодом за источником данных из ODBC
- 16. Включение множественного выбора в GridView с источником пользовательских данных
- 17. Сделать DropDownList внутри GridView с объектным источником данных
- 18. GridView с источником SiteMap данных - отображение дочерних узлов
- 19. C# - привязка данных GridView Eval без управления источником данных
- 20. GridView - показать заголовки на пустом источнике данных
- 21. GridView остается пустым
- 22. Показать нижний колонтитул сетки на пустой сетке?
- 23. Javascript скрыть строки Gridview с пустым полем
- 24. ASP.NET Databind GridView to Datasource приходит пустым
- 25. GridView с ObjectDataSource Показать сноску на Пустых данных
- 26. asp: нижний колонтитул Gridview поверх предметов?
- 27. Как добавить нижний колонтитул в Yii2 Gridview
- 28. Показать изображение в FitNesse с динамическим источником
- 29. Свободная связь с источником данных
- 30. Проблема с источником данных MediaPlayer
На самом деле я предпочитаю 'EmptyDataTemplate' больше, чем связывать пустые' DataSet' с 'GridView', я делаю это, и у него много проблем и почему они фактически ставят' EmptyDataTemplate'. Я обвинял Microsoft в том, что она не реализует такую функцию, но для Bind empty DataSet для GridView это не лучший способ сделать это. –