Show/Hide 按钮取决于存储过程 return 值
Show/Hide Button depending on stored procedure return value
我想就我遇到的问题寻求帮助。我有一个存储过程 returns 一个数据集来填充 datagriview。数据网格的其中一列包含 2 个手动设置的按钮,'View' 和 'Add'。这些按钮会打开一个新的弹出窗口 window,它显示额外的信息等。如果返回的参数 POCount 中的 1 个计数等于 0,我希望能够隐藏 'View' 按钮。即该行没有什么可查看的。实现这一目标的最佳方法是什么。
我的存储过程是
SELECT PM.ProjectCode,
PM.ProjectDesc,
PM.Active,
PM.Chargeable,
(SELECT COUNT(*) FROM POMaster PO WHERE PO.ProjectCode = PM.ProjectCode) AS POCount
FROM PROJECTMASTER PM
前端代码
<asp:TemplateField HeaderText="P.O. Number" ItemStyle-Wrap="false" >
<ItemTemplate>
<asp:LinkButton ID="linkPONumber" runat="server" Text="View" CssClass="buttonStyle" OnClick="LinkPONumber_Click" CommandArgument='<%# Eval("ProjectCode") + ";" + Eval("ProjectDesc") %>' ></asp:LinkButton>
<asp:LinkButton ID="linkAddPO" runat="server" Text="Add" CssClass="buttonStyle" OnClick="LinkAddPO_Click" CommandArgument='<%# Eval("ProjectCode") + ";" + Eval("ProjectDesc") %>' ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
代码隐藏
private void BindGrid()
{
DSProjectDetails = objProjectMasterBL.GetProjectDetails();
GvProject.DataSource = DSProjectDetails;
GvProject.DataBind();
}
public DataSet GetProjectDetails()
{
try
{
SqlProcedureName = "USP_GetProjectListWithPO";
SqlConnectionObject = DBConnection.InitializeConnection(SqlConnectionObject);
dsrepeater = SqlHelper.ExecuteDataset(SqlConnectionObject, CommandType.StoredProcedure, SqlProcedureName);
return dsrepeater;
}
catch (Exception ex)
{
log.Error("Exception in ProjectMasterBL.GetProjectDetails:", ex);
throw ex;
}
}
如果我发送了错误的代码部分,我深表歉意,仍然属于菜鸟行列
您可以使用 Link 按钮的 Visible
属性:-
<asp:LinkButton ID="linkAddPO" runat="server" Text="Add" CssClass="buttonStyle"
OnClick="LinkAddPO_Click" Visible='<%# Convert.ToInt32(Eval("POCount")) == 0 %>'
CommandArgument='<%# Eval("ProjectCode") + ";" + Eval("ProjectDesc") %>'>
</asp:LinkButton>
每当您的 SP returns POCount
为 0
时,您的 Link 按钮将被隐藏。
我想就我遇到的问题寻求帮助。我有一个存储过程 returns 一个数据集来填充 datagriview。数据网格的其中一列包含 2 个手动设置的按钮,'View' 和 'Add'。这些按钮会打开一个新的弹出窗口 window,它显示额外的信息等。如果返回的参数 POCount 中的 1 个计数等于 0,我希望能够隐藏 'View' 按钮。即该行没有什么可查看的。实现这一目标的最佳方法是什么。
我的存储过程是
SELECT PM.ProjectCode,
PM.ProjectDesc,
PM.Active,
PM.Chargeable,
(SELECT COUNT(*) FROM POMaster PO WHERE PO.ProjectCode = PM.ProjectCode) AS POCount
FROM PROJECTMASTER PM
前端代码
<asp:TemplateField HeaderText="P.O. Number" ItemStyle-Wrap="false" >
<ItemTemplate>
<asp:LinkButton ID="linkPONumber" runat="server" Text="View" CssClass="buttonStyle" OnClick="LinkPONumber_Click" CommandArgument='<%# Eval("ProjectCode") + ";" + Eval("ProjectDesc") %>' ></asp:LinkButton>
<asp:LinkButton ID="linkAddPO" runat="server" Text="Add" CssClass="buttonStyle" OnClick="LinkAddPO_Click" CommandArgument='<%# Eval("ProjectCode") + ";" + Eval("ProjectDesc") %>' ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
代码隐藏
private void BindGrid()
{
DSProjectDetails = objProjectMasterBL.GetProjectDetails();
GvProject.DataSource = DSProjectDetails;
GvProject.DataBind();
}
public DataSet GetProjectDetails()
{
try
{
SqlProcedureName = "USP_GetProjectListWithPO";
SqlConnectionObject = DBConnection.InitializeConnection(SqlConnectionObject);
dsrepeater = SqlHelper.ExecuteDataset(SqlConnectionObject, CommandType.StoredProcedure, SqlProcedureName);
return dsrepeater;
}
catch (Exception ex)
{
log.Error("Exception in ProjectMasterBL.GetProjectDetails:", ex);
throw ex;
}
}
如果我发送了错误的代码部分,我深表歉意,仍然属于菜鸟行列
您可以使用 Link 按钮的 Visible
属性:-
<asp:LinkButton ID="linkAddPO" runat="server" Text="Add" CssClass="buttonStyle"
OnClick="LinkAddPO_Click" Visible='<%# Convert.ToInt32(Eval("POCount")) == 0 %>'
CommandArgument='<%# Eval("ProjectCode") + ";" + Eval("ProjectDesc") %>'>
</asp:LinkButton>
每当您的 SP returns POCount
为 0
时,您的 Link 按钮将被隐藏。